2016-03-02 85 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"}