簡體   English   中英

根據另一個數組過濾對象數組

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM