我正在寻找如何使用lodash为包含每个值的新键的值压缩对象数组。尝试使用zip,zipObject和map,但我找不到密钥。
我想要做的是以下(避免在数组上手动迭代)
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'}
]
答案 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;