gpt4 book ai didi

javascript - 过滤对象数组,其中对象中的一个字段是数组

转载 作者:太空狗 更新时间:2023-10-29 17:49:09 27 4
gpt4 key购买 nike

 data:[
{
id:1,
tags:['TagA','TagB','TagC']
},
{
id:2,
tags:['TagB','TagD']
},
{
id:3,
tags:['tagE','tagC']
}
]

filterCondition:{tags:['TagA','TagB']}

Expected Output: [
{
id:1,
tags:['TagA','TagB','TagC']
},
{
id:2,
tags:['TagB','TagD']
}
]

是否有可能使用过滤器方法在 typescript 中实现这一点? 当 tags 字段不是数组时,但当它在数组中时,这是可能的 代码中断。

我试过了,但失败了:

   data.filter(o => Object.keys(filterCondition).every(k => filterCondition[k].some(f => o[k] === f)));

最佳答案

您可以使用filterincludes

const data = [{id:1,tags:['TagA','TagB','TagC']},{id:2,tags:['TagB','TagD']},{id:3,tags:['tagE','tagC']}];

const filterData = tag => data.filter(d => tag.some(t => d.tags.includes(t)));

console.log(filterData(['TagA', 'TagB']));

以提到的 conditionArray 形式进行少量编辑:

    let filterArray={tags:['TagA','TagB']}

const data = [{id:1,tags:['TagA','TagB','TagC']},{id:2,tags:['TagB','TagD']},{id:3,tags:['tagE','tagC']}];

output= data.filter(o => Object.keys(filterArray).every(d => filterArray[d].some(t => o[d].includes(t))));

关于javascript - 过滤对象数组,其中对象中的一个字段是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53815361/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com