[英]Filter an array of objects based on another array
我想過濾這個Object的數組:
const testArray = [{
id: 4,
filters: ["Norway", "Sweden"]
}, {
id: 2,
filters :["Norway", "Sweden"]
}, {
id: 3,
filters:["Denmark", "Sweden"]
}]
用過濾器
const myFilter=["Norway", "Sweden"]
但是我的代碼只返回 []? 到目前為止我嘗試了什么:
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))
您可以使用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)
注意:此處使用的Array#every
只是確認每個數組的每個元素都在另一個數組中,而不管元素出現的順序如何。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.