JS:当对象键是对象数组时,按数组过滤对象数组 [英] JS: Filter array of objects by array, when object key is an array of objects

查看:44
本文介绍了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?

感谢您的时间!

推荐答案

您可以使用

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆