JS:当对象键是对象数组时,按数组过滤对象数组 [英] JS: Filter array of objects by array, when object key is an array of objects
本文介绍了JS:当对象键是对象数组时,按数组过滤对象数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一系列与以下内容相似的对象:
I have an array of objects that look similar to the following:
let array = [
{
id: 1,
name: Foo,
tools: [{id:3, toolname: Jaw},{id:1, toolname: Law}]
},
{
id: 2,
name: Boo,
tools: [{id:2, toolname: Caw}]
},
{
id: 3,
name: Loo,
tools: [{id:3, toolname: Jaw}, {id:4, toolname: Maw}]
}
]
我正在尝试使用类似于 includes
的东西从上面的数组中过滤对象,该对象类似于如下所示的现有数组:
I am trying to filter objects from the above array using something similar to includes
against an existing array which looks like the following:
let secondarray = ['Jaw', 'Taw']
我如何返回在第二个数组中具有命名工具的对象列表?
How would I return a list of objects which has a tool named within the second array?
感谢您的时间!
推荐答案
您可以使用 filter()
You can use some()
with the tools
inside filter()
let array = [{id: 1,name: 'Foo',tools: [{id: 3,toolname: 'Jaw'}, {id: 1,toolname: 'Law'}]},{id: 2,name: 'Boo',tools: [{id: 2,toolname: 'Caw'}]},{id: 3,name: 'Loo',tools: [{id: 3,toolname: 'Jaw'}, {id: 4,toolname: 'Maw'}]}]
let secondarray = ['Jaw', 'Taw']
let filtered = array.filter(item => item.tools.some(obj => secondarray.includes(obj.toolname)))
console.log(filtered)
这篇关于JS:当对象键是对象数组时,按数组过滤对象数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文