[英]Filter an array of objects based on another array
I want to filter this array of Object:我想过滤这个Object的数组:
const testArray = [{
id: 4,
filters: ["Norway", "Sweden"]
}, {
id: 2,
filters :["Norway", "Sweden"]
}, {
id: 3,
filters:["Denmark", "Sweden"]
}]
with the filter用过滤器
const myFilter=["Norway", "Sweden"]
However my code just returns []?但是我的代码只返回 []? What I have tried so far:
到目前为止我尝试了什么:
const testArray = [{
id: 4,
filters: ["Norway", "Sweden"]
}, {
id: 2,
filters :["Norway", "Sweden"]
}, {
id: 3,
filters:["Denmark", "Sweden"]
}]
const myFilter=["Norway", "Sweden"]
console.log(testArray.filter(e=>e.filters===myFilter))
You can use Array#every
to test the equality + of two arrays as follows:您可以使用
Array#every
来测试两个 arrays 的相等性+ ,如下所示:
const output = testArray.filter(
e => e.filters.every(
filter => myFilter.includes(filter)
)
);
const testArray = [{ id: 4, filters: ["Norway", "Sweden"] }, { id: 2, filters:["Norway", "Sweden"] }, { id: 3, filters:["Denmark", "Sweden"] }], myFilter = ["Norway", "Sweden"], output = testArray.filter( e => e.filters.every( filter => myFilter.includes(filter) ) ); console.log(output)
NOTE : Array#every
as used here just confirms that every element of each array is in the other, regardless of the order in which the elements appear .注意:此处使用的
Array#every
只是确认每个数组的每个元素都在另一个数组中,而不管元素出现的顺序如何。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.