2016-03-02 83 views
-1

我想反轉對象數組併合並它們。反轉併合並對象數組

before = [{a: 1, b: 2}, {a: 3, b: 4}]

預期的結果:

after = {1: 'a', 2: 'b', 3: 'a', 4: 'b'}

你會怎麼做呢?用下劃線/ lodash?

回答

0

以下劃線/ lodash:

_.extend.apply(this,_.map(data,_.invert))

1
var before = [{a: 1, b: 2}, {a: 3, b: 4}]; 
var after = {}; 

before.forEach(function(e) { 
    Object.keys(e).forEach(function(k) { 
     after[e[k]] = k; 
    }); 
}); 

console.log(after);//{ '1': 'a', '2': 'b', '3': 'a', '4': 'b' } 
2

隨着lodash,如果使用鏈接,你可以把它很多更具可讀性。

var before = [{a: 1, b: 2}, {a: 3, b: 4}]; 
var after = _(before) 
    .map(_.invert) 
    .reduce(_.merge); 
console.log(after); 
// Object {1: "a", 2: "b", 3: "a", 4: "b"}