合併物件並對 JavaScript 中的單個屬性進行求和
假設我們有兩個物件陣列,這些陣列包含有關某公司一些產品的資訊 -
const first = [
{
id: "57e7a1cd6a3f3669dc03db58",
quantity:3
},
{
id: "57e77b06e0566d496b51fed5",
quantity:3
},
{
id: "57e7a1cd6a3f3669dc03db58",
quantity:3
},
{
id: "57e77b06e0566d496b51fed5",
quantity:3
}
];
const second = [
{
id: "57e7a1cd6a3f3669dc03db58",
quantity:6
},
{
id: "57e77b06e0566d496b51fed5",
quantity:6
}
];我們現在需要編寫一個函式,該函式合併這兩個陣列,使得具有相同 id 的物件不會重複出現,而且重複 id 的物件的 quantity 屬性會加在一起。
因此,讓我們編寫此函式的程式碼 -
示例
const first = [
{
id: "57e7a1cd6a3f3669dc03db58",
quantity:3
},
{
id: "57e77b06e0566d496b51fed5",
quantity:3
},
{
id: "57e7a1cd6a3f3669dc03db58",
quantity:3
},
{
id: "57e77b06e0566d496b51fed5",
quantity:3
}
];
const second = [
{
id: "57e7a1cd6a3f3669dc03db58",
quantity:6
},
{
id: "57e77b06e0566d496b51fed5",
quantity:6
}
];
const mergeArray = (first, second) => {
return [...first, ...second].reduce((acc, val, i, arr) => {
const { id, quantity } = val;
const ind = acc.findIndex(el => el.id === id);
if(ind !== -1){
acc[ind].quantity += quantity;
}else{
acc.push({
id,
quantity
});
}
return acc;
}, []);
}
console.log(mergeArray(first, second));輸出
控制檯中的輸出將是 -
[
{ id: '57e7a1cd6a3f3669dc03db58', quantity: 12 },
{ id: '57e77b06e0566d496b51fed5', quantity: 12 }
]
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP