让我们看一个例子:
var arr1 = new Array({name: "lang", value: "German", carId: 1}. {name: "lang", value: "German", carId: 3});
我需要合并这两个数组,并将该carId转换为具有这些值的列表:
({name: "lang", value: "German", carId: [1,3]});
答案 0 :(得分:0)
这是代码
var arr1 = new Array({ name: "lang", value: "German", carId: 1 });
var arr2 = new Array({ name: "lang", value: "German", carId: 3 });
const result = arr1.map((o) => {
let item
arr2.forEach(
(o2) => {
if (o2.name === o.name && o2.value === o.value) {
item = { name: o.name, value: o.value, carId: [o.carId, o2.carId] }
}
}
)
return item
}).filter(item => item)
使用的方法(可能会引起混淆):
答案 1 :(得分:0)
var arr1 = new Array({name: "lang", value: "German", carId: 1});
var arr2 = new Array({name: "lang", value: "German", carId: 3});
var mergedArray = arr1.concat(arr2); //merged the two arrays
var cardIds = {}; // to collect the cardsIds for same name and value
// collect the cardsIds for same name and value
mergedArray.map((item) => {
var key = item.name + '_' + item.value
cardIds[key] = cardIds[key]? {...cardIds[key], item.carId}: [item.carId]
})
// Get unique element from merged array by name and value
var result = _.uniqBy(mergedArray, (o) => {return o.name && o.value});
// get the result with name, value and their cards in the array.
result = result.map((item) => {
var key = item.name + '_' + item.value
item.cardId = cardIds[key]
return item
})