![](/img/trans.png)
[英]How to update the specific array element index position and specific array of object property in Javascript?
[英]How to update specific property by comparing two array of object in javascript?
我在 javascript 中有以下兩個 object 數組
data1 = [
{
id: 123,
option: "ABC",
value: "123"
},
{
id: 234,
option: "DFG",
value: "234"
}
];
data2 = [
{
id: 123,
option: "ABC",
value: "123"
}
];
當 id 與 object 的第二個數組匹配時,我想將 object 的第一個數組中的值(屬性)設置為 0,僅用於該特定 id。 如下所示,一旦 id 123 在兩個數組中都匹配,那么 data1 數組應該如下所示
data1 = [
{
id: 123,
option: "ABC",
value: "0"
},
{
id: 234,
option: "DFG",
value: "234"
}
];
如何實現上述場景?
您可以將 data2 的 id 保存在Set
中並遍歷 data1 並更改每個項目的值(如果其 id 在集合中):
let data1 = [{ id: 123, option: 'ABC', value: "123" }, { id: 234, option: "DFG", value: "234" } ]; let data2 = [{ id: 123, option: 'ABC', value: "123" } ]; let set = new Set(); for(let i = 0; i < data2.length; i++) set.add(data2[i]['id']) for(let i = 0; i < data1.length; i++) if(set.has(data1[i]['id'])) data1[i]['value'] = 0; console.log(data1)
您可以使用foreach
,這將改變您需要的第一個數組,或者您也可以使用map
(但它會生成新數組):
var data1 = [{ id: 123, option: 'ABC', value: "123" }, { id: 234, option: "DFG", value: "234" } ]; var data2 = [ { id: 123, option: 'ABC', value: "123" } ]; data1.forEach(k=>{ ispresent = data2.find(p=>p.id==k.id); if(ispresent) k.value = '0' }); console.log(data1);
您可以使用new Set()
從第二個數組中創建一組所有 object id,然后將第一個數組.map()
設置為新對象,如果對象的 id 在集合內,則更改value
屬性(使用.has()
):
const data1 = [{ id: 123, option: 'ABC', value: "123" }, { id: 234, option: "DFG", value: "234" } ]; const data2 = [{ id: 123, option: 'ABC', value: "123" }]; const idSet = new Set(data2.map(o => o.id)); const res = data1.map(o => ({...o, value: idSet.has(o.id)? "0": o.value})); console.log(res);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.