【问题标题】:How to transform array of objects into one object by Lodash如何通过 Lodash 将对象数组转换为一个对象
【发布时间】:2017-12-21 16:01:44
【问题描述】:

示例:

[
    {"name":"tony", "age":14},
    {"name":"jacky", "age":23},
    {"name":"lucy", "age":34},
    {"name":"sam", "age":15},
    {"name":"jay", "age":31}
]

到:

{
    "tony": [],
    "jacky": [],
    "lucy": [],
    "sam": [],
    "jay": []
}

【问题讨论】:

    标签: javascript arrays object arraylist lodash


    【解决方案1】:

    尝试使用Array#forEach 函数。

    var arr =[ {"name":"tony", "age":14}, {"name":"jacky", "age":23}, {"name":"lucy", "age":34}, {"name":"sam", "age":15}, {"name":"jay", "age":31} ]
    var obj={}
    
    arr.forEach(function(a){
     obj[a.name]=[]
    })
    console.log(obj)

    或者简单地用Array#reduce

    var arr =[ {"name":"tony", "age":14}, {"name":"jacky", "age":23}, {"name":"lucy", "age":34}, {"name":"sam", "age":15}, {"name":"jay", "age":31} ]
    
    var res = arr.reduce((a,b) => (a[b.name]=[] ,a),{})
    console.log(res)

    【讨论】:

      【解决方案2】:

      没有必要使用LodashArray.prototype.reduce() 将完成这项工作。

      const data = [
          {"name":"tony", "age":14},
          {"name":"jacky", "age":23},
          {"name":"lucy", "age":34},
          {"name":"sam", "age":15},
          {"name":"jay", "age":31}
      ];
      
      const result = data.reduce((acc, curr) => {
        acc[curr.name] = [];
        
        return acc;
      }, {});
      
      console.log(result);

      【讨论】:

        【解决方案3】:

        如果您不想使用 forreduce,这里有一个 lodash 单行代码

        _(data).keyBy('name').mapValues(() => []).value()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-01-29
          • 2015-07-25
          • 2019-10-20
          • 1970-01-01
          • 2016-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多