lodash:如何压缩具有值的对象数组
lodash: how to zip an array of objects with values
我正在研究如何使用 lodash 压缩包含值的对象数组,包括每个值的新键。尝试使用 zip, zipObject and map 但我没有找到密钥。
我想做的是下面的(避免手动遍历数组)
const array = [
{a: 3, b: 42},
{c: 4},
{d: 12}
]
const values = ['these', 'are', 'new', 'values']
// goal = foo(array, values) <<< HERE
goal = [
{a: 3, b: 42, v: 'these'},
{c: 4, v: 'are'},
{d: 12, v:'new'}
]
您可以使用本机 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>
您可以使用 zipWith() 提供自定义迭代对象:
var newArray = _.zipWith(array, values, function(item, value) {
return _.defaults({ v: value }, item);
});
请注意,此方法不会改变原始 array
。
我正在研究如何使用 lodash 压缩包含值的对象数组,包括每个值的新键。尝试使用 zip, zipObject and map 但我没有找到密钥。
我想做的是下面的(避免手动遍历数组)
const array = [
{a: 3, b: 42},
{c: 4},
{d: 12}
]
const values = ['these', 'are', 'new', 'values']
// goal = foo(array, values) <<< HERE
goal = [
{a: 3, b: 42, v: 'these'},
{c: 4, v: 'are'},
{d: 12, v:'new'}
]
您可以使用本机 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>
您可以使用 zipWith() 提供自定义迭代对象:
var newArray = _.zipWith(array, values, function(item, value) {
return _.defaults({ v: value }, item);
});
请注意,此方法不会改变原始 array
。