[英]Update first array on the basis of second in JavaScript
我想在第二個數組的基礎上更新第一個數組的值。
例如。 這是我的第一個數組
let a = [{id:"1",name:"none"},{id:"2",name:"two"}]
這是我的第二個數組
let b = [{id:"1",name:"one"}]
這就是我想要的 output。
console.log(a) //[{id:"1",name:"one"},{id:"2",name:"two"}]
目前,我正在嘗試通過使用 array.filters 和 array.foreach 來實現這一點,但我得到了一個空數組。
a = a.filter((item) => {
b.forEach(i => {
if(item.id == i.id){
return i
}else{
return item
}
})
})
附言。 我不想創建一個新的Array,我只想在b的基礎上更新a的值。 謝謝!
這是測試用例 2 。
陣列 1
let x = [
{id:"1", status:"occupied"},
{id:"2", status:"occupied"},
{id:"3", status:"occupied"},
{id:"4", status:"occupied"},
{id:"5", status:"occupied"},
{id:"6", status:"occupied"},
{id:"7", status:"occupied"}
]
陣列 2
let z = [
{id:"1",status:"cleaning"},
{id:"3",status:"cleaning"},
{id:"5",status:"cleaning"},
{id:"7",status:"cleaning"},
{id:"2",status:"cleaning"},
]
Object.assign
let y = Object.assign(x,z);
console.log(y);//
我得到這個 output 搞砸了。
{id: "1", status: "cleaning"}
{id: "3", status: "cleaning"}
{id: "5", status: "cleaning"}
{id: "7", status: "cleaning"}
{id: "2", status: "cleaning"}
{id: "6", status: "occupied"}
{id: "7", status: "occupied"}
您可以使用Object.assign
通過處理重復來合並兩個對象`
let c = Object.assign(a,b);
console.log(c);
像這樣的東西怎么樣:
const a = [{id:"1",name:"none"},{id:"2",name:"two"}];
const b = [{id:"1",name:"one"}];
for (const item of a) {
const bFound = b.find(bItem => bItem.id === item.id);
if (bFound) {
item.name = bFound.name;
}
}
console.log(a);
嘗試這個:
let a = [{id:"1",name:"none"},{id:"2",name:"two"}]
let b = [{id:"1",name:"one"}]
var merge = (a, b, p) => a.filter( aa => ! b.find ( bb => aa[p] === bb[p]) ).concat(b)
console.log(merge(a, b, "id"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.