我有一个类似于数据库结果的数组结构
var new_arra = {a: 23, b: 24, c: 35}
我想创建一个新对象,其值为键和值,如下所示:
var result = _.forEach(results, function(index) {
var result = _.map(index, function(value, prop) {
return {prop: prop, value: value};
});
});
我怎么能在lodash中这样做?
我尝试了以下方法:
{{1}}
答案 0 :(得分:3)
使用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 {/ 3> 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);

答案 1 :(得分:1)
你可以用这种方式用纯JS做到这一点:
var arr = [{
name: 'a',
age: 23
}, {
name: 'b',
age: 24
}, {
name: 'c',
age: 35
}]
var result = {};
arr.forEach(function(item) {
result[item.name] = item.age
});
console.log(result);

reduce
的另一种方式:
var arr = [{
name: 'a',
age: 23
}, {
name: 'b',
age: 24
}, {
name: 'c',
age: 35
}];
var result = arr.reduce(function(store, item) {
store[item.name] = item.age;
return store;
}, {});
console.log(result);

答案 2 :(得分:1)
你只需要这两行
let newData = {};
arr.map((item)=>newData[item.name]=item.age);
console.log(newData);
或者您也可以使用lodash
来完成 let newData = {};
_.map(arr,(item)=>newData[item.name]=item.age);
答案 3 :(得分:0)
那很简单。
您需要做的就是遍历每个数据并将其插入新的空对象中。 例如。
let new_arra = {};
_.each(arr, a => {
new_arra[a.name] = a.age
});
但是,如果您真的想了解更多信息,可以阅读以下博客:Noobie Programmer: Lodas - The best 3rd party library for react and javascript developers
它教您基本知识。掌握它之后,您就可以执行任何复杂的数据结构。