簡體   English   中英

在 JavaScript 中的第二個基礎上更新第一個數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM