Lodash合并数组与字典对象键值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lodash合并数组与字典对象键值相关的知识,希望对你有一定的参考价值。

我有一个阵列

var keys = ['Name','Id'];

我想与下面的字典对象合并

var projects = {
 "project1": "11111",
 "project2": "22222",
 "project3": "33333",
 };

产生下面的输出

output =
[
{ Name:"project1", Id:"11111"},
{ Name:"project2", Id:"22222"},
{ Name:"project3", Id:"33333"},
]

我试过用

console.log(_.zipObject(keys, projects));

但这失败了

我怎么用lodash这样做?

答案

由于您要求专门使用lodash,您可以使用_map

DEMO

var projects = {
 "project1": "11111",
 "project2": "22222",
 "project3": "33333",
 };
var result = _.map(projects, function(value, prop) {
  return { Name: prop, id: value };
});

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.2/lodash.min.js"></script>
另一答案

使用Object.keys()Array.map()创建对象数组。您可以使用computed property names指定密钥名称:

var keys = ['Name','Id'];

var projects = {
 "project1": "11111",
 "project2": "22222",
 "project3": "33333",
};

var result = Object.keys(projects)
  .map(function(k) {
    return {
      [keys[0]]: k,
      [keys[1]]: projects[k]
    };
  });

console.log(result);

以上是关于Lodash合并数组与字典对象键值的主要内容,如果未能解决你的问题,请参考以下文章

Lodash 合并:仅在源值与目标值匹配时复制对象属性

使用 Lodash 按属性合并对象数组

使用 lodash 合并数组内的数组

删除嵌套数组中具有键值的对象

使用 Lodash 进行深度合并

我将如何减少这个数组,以便每个对象中的对象被合并 javascript 但不知道键值名称