如何在Lodash中做到这一点

如何在Lodash中做到这一点

我从数据库结果中得到了一个类似结构的数组

var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}, {name: 'c', age: 35}]


我想创建一个新对象,其值作为键和值,如下所示:

var new_arra  = {a: 23, b: 24, c: 35}


我如何在lodash中做到这一点?

我尝试了以下方法:

var result = _.forEach(results, function(index) {
    var result = _.map(index, function(value, prop) {
        return {prop: prop, value: value};
    });
});

最佳答案

使用ES5-用Array#reduce迭代一个空对象的初始值。在每次迭代中,将名称设置为键,将年龄设置为值。



var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}, {name: 'c', age: 35}];

var result = arr.reduce(function(obj, o) {
  obj[o.name] = o.age;

  return obj;
}, {});

console.log(result);





使用ES6-使用Array#map进行迭代,使用destructuring获取值,并使用computed property names进行设置。通过将Object#assignspread syntax一起将所有对象合并到一个对象中:



const arr = [{name: 'a', age: 23}, {name: 'b', age: 24}, {name: 'c', age: 35}];

const result = Object.assign({}, ...arr.map(({ name, age }) => ({ [name]: age })));

console.log(result);

09-25 17:31