我怎么在Lodash这样做?

时间:2017-11-02 09:49:47

标签: javascript node.js lodash

我有一个类似于数据库结果的数组结构

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}}

4 个答案:

答案 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

它教您基本知识。掌握它之后,您就可以执行任何复杂的数据结构。