簡體   English   中英

檢查javascript / typescript中兩個對象數組中的相同名稱?

[英]check same names in two array of objects in javascript /typescript?

我有兩個對象數組

array1=[{name:'apple',deleted:false},
       {name:'road',deleted:false},
       {name:'tree',deleted:false}]

array2=[{name:'apple'},
       {name:'tree'}]

我想要的是:如果 array1 對象在 array2 中具有相同的名稱,我想將 array1 中“已刪除”的值更改為 true 。 例如: {name:'apple',deleted:true}

期待結果數組1:

array1=[{name:'apple',deleted:true},
           {name:'road',deleted:false},
           {name:'tree',deleted:true}]

在這里您可以看到,只有apple, treedeleted=true ,因為array2只有 2 個名稱: appletree

你可以 :

  • 使用 forEach 在 array1 上循環獲取樣本

  • 使用一些函數來設置刪除的布爾值

    deleted = array2.some(elem2 => elem2.name === elem.name) 

 const array1 = [{ name: 'apple', deleted: false }, { name: 'road', deleted: false }, { name: 'tree', deleted: false } ] const array2 = [{ name: 'apple' }, { name: 'tree' } ]; array1.forEach(elem => elem.deleted = array2.some(elem2 => elem2.name === elem.name)); console.log(array1);

使用forEach()循環 array1 並使用include()設置刪除的值

 const array1=[{name:'apple',deleted:false}, {name:'road',deleted:false}, {name:'tree',deleted:false}] const array2=[{name:'apple'}, {name:'tree'}] array1.forEach(el=> el.deleted = array2.map(foo => foo.name).includes(el.name)) console.log(array1)

  1. 創建一deletedItems

  2. 映射項目並使用Set更新deleted的屬性。

 const items = [{ name: "apple", deleted: false }, { name: "road", deleted: false }, { name: "tree", deleted: false }], deletedItems = [{ name: "apple" }, { name: "tree" }], deletedSet = new Set(deletedItems.map((d) => d.name)), updatedItems = items.map((i) => (deletedSet.has(i.name) ? { ...i, deleted: true } : i)); console.log(updatedItems);

您可以使用Array.mapArray.find

 let array1=[ {name:'apple',deleted:false}, {name:'road',deleted:false}, {name:'tree',deleted:false} ]; let array2=[ {name:'apple'}, {name:'tree'} ]; array1 = array1.map(item1 => array2.find(item2 => item1.name == item2.name) ? {...item1, deleted:true} : item1); console.log(array1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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