我有两个数组:First-Jobs对象数组,它包含数组ItemId,如下所示:
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"
},
]
如何从jobs数组中筛选出id不等于任何ItemId的项目数组? 我尝试了三个循环,但它在一个作业数组中只删除了一个具有相同id的项。 感谢任何帮助。
我们将使用array.filter
对items
中的每个元素进行循环,并创建一个新的数组,其中只包含要保留的项。
对于每个值,我们将查看是否有作业在itemids
中包含代码id
。 为此,我们将遍历每个作业,对于每个作业,我们将查看底层的itemsids
值。
array.some
这里将立即离开,在它找到一些东西。
null
const jobs = [{
name: null,
id: 612,
items: [],
stat: 1,
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)));
console.log(filteredItems);