我从数据库结果中得到了一个类似结构的数组
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#assign和spread 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);