[英]Comparing two objects typescript and check if there three or more value same
[英]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, tree
已deleted=true
,因為array2
只有 2 個名稱: apple
和tree
。
你可以 :
使用 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)
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.map
和Array.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.