lodash:如何使用值压缩对象数组

时间:2015-12-16 10:14:20

标签: javascript dictionary zip lodash

我正在寻找如何使用lodash为包含每个值的新键的值压缩对象数组。尝试使用zipzipObjectmap,但我找不到密钥。

我想要做的是以下(避免在数组上手动迭代)

var array = [
   {a: 3, b: 42}, 
   {c: 4}, 
   {d: 12}
 ]
 var values = ['this', 'are', 'new', 'values']
 var goal = [
   {a: 3, b: 42, v: 'this'}, 
   {c: 4, v: 'are'},
   {d: 12, v:'new'}
 ]

2 个答案:

答案 0 :(得分:4)

您可以使用zipWith()提供自定义迭代:

var newArray = _.zipWith(array, values, function(item, value) {
    return _.defaults({ v: value }, item);
});

请注意,此方法不会改变原始array

答案 1 :(得分:2)

您可以使用原生map功能。请参阅以下代码段。

如果您想使用lodash执行此操作,除_.map(array, function (item, index) {...});外,您可以执行相同的操作。



var array = [
  {a: 3, b: 42}, 
  {c: 4}, 
  {d: 12}
];
var values = ['this', 'are', 'new', 'values']
 
var goal = array.map(function (item, index) {
  item.v = values[index];
  return item;
});

document.getElementById('goal').innerHTML = JSON.stringify(goal);

<div id="goal"></div>
&#13;
&#13;
&#13;