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)));
最佳答案
您可以使用filter
和includes
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/