我如何在Lodash中做到这一点?
我有一个像数据库结果一样的结构数组
var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}, {name: 'c', age: 35}]
我想创build一个新的对象,值如下所示:
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);
你可以用纯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);
你只需要这两条线
let newData = {}; arr.map((item)=>newData[item.name]=item.age); console.log(newData);
或者你也可以使用lodash做到这一点
let newData = {}; _.map(arr,(item)=>newData[item.name]=item.age);
- 为什么Meteor.users.findOne({username:“test”})返回一个对象,但用具有相同值的variablesreplace“test”会返回undefined
- 通过节点中的Module.exportsinheritance
- 如何在Node.js中连接之前等待函数完成
- 命名的函数expression式具有匹配的variables名称
- 从快递中间件访问数据
- 从node.js模块中将原型函数添加到JSON
- Express.js服务器端渲染 – 请求'/ json / version /
- 我应该完全消除从我使用的代码(Bluebird)承诺的try / catch?
- 是module.export = 不好的做法?