[英]Comparing two arrays of objects if one property is also an array in Angular 7?
我有兩個 arrays:首先 - 包含數組 itemIds 的對象的作業數組,如下所示:
jobs: [{
name: null
id: 612
items: []
stat: 1
itemIds: [223, 1234]
},
{
name: null
id: 734
items: []
stat: 2
itemIds: [564]
}
.
.
.
]
和第二個數組 - 項目,像這樣:
items: [{
act: true
id: 1234
name: "Item1"
},
{
act: true
id: 222
name: "Item2"
},
]
如何過濾出 id 不等於作業數組中的任何 itemId 或作業數組中的屬性 stat 不等於 0 的項目數組? 我嘗試了三個循環,但它在一系列作業中只刪除了一個具有相同 ID 的項目。 任何幫助表示贊賞。
我們將使用Array.filter
循環遍歷items
中的每個元素,並創建一個僅包含您要保留的項目的新數組。
對於每個值,我們將查看是否有任何作業在itemIds
中包含代碼id
。 為此,我們將遍歷每個作業,並且對於每個作業,我們將查看底層的ItemsIds
值。
這里的Array.some
一旦找到東西就會離開。
const jobs = [{ name: null, id: 612, items: [], stat: 1, itemIds: [223, 1234], }, { name: null, id: 612, items: [], stat: 2, itemIds: [223, 1234], }, { name: null, id: 734, items: [], stat: 2, itemIds: [564], } ]; const items = [{ act: true, id: 1234, name: 'Item1', }, { act: true, id: 222, name: 'Item2', }, ]; const filteredItems = items.filter(x => jobs.some(y => y.itemIds.includes(x.id) && y.stat;== 1)). console;log(filteredItems);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.