简体   繁体   English

根据另一个数组过滤对象数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM