簡體   English   中英

按數組過濾對象數組

[英]Filter array of objects by array

如何用另一個數組值過濾以下數組?

  const GuideTabs = [
    { id: 0, label: 'Highlights', analyticsCategory: 'Highlights' },
    { id: 1, label: 'Labor & Employment', analyticsCategory: 'Labor & Employment' },
    { id: 2, label: 'Culture', analyticsCategory: 'Culture' },
    { id: 3, label: 'Holidays', analyticsCategory: 'Holidays' },
  ]

我想用以下數組過濾這個數組,只返回現有數據

 const gtabs = ['Culture, Holidays']
  const arr = GuideTabs.filter(function(item){
    return gtabs.indexOf(item.id) === -1
  })

但它始終返回 GuideTabs 中的所有 4 個數組項,但它應該從 GuideTabs 數組中返回 2,3 個項

 const GuideTabs = [ { id: 0, label: 'Highlights', analyticsCategory: 'Highlights' }, { id: 1, label: 'Labor & Employment', analyticsCategory: 'Labor & Employment' }, { id: 2, label: 'Culture', analyticsCategory: 'Culture' }, { id: 3, label: 'Holidays', analyticsCategory: 'Holidays' }, ] const gtabs = ['Culture, Holidays'] const arr = GuideTabs.filter(function(item){ return gtabs.indexOf(item.id) === -1 }) console.log(arr)

你需要使用

gtabs.includes(obj.label))

因為您要與包含字符串的gTabs進行比較,例如"Culture", "Holidays"

 const GuideTabs = [ { id: 0, label: "Highlights", analyticsCategory: "Highlights" }, { id: 1, label: "Labor & Employment", analyticsCategory: "Labor & Employment", }, { id: 2, label: "Culture", analyticsCategory: "Culture" }, { id: 3, label: "Holidays", analyticsCategory: "Holidays" }, ]; const gtabs = ["Culture", "Holidays"]; const result = GuideTabs.filter((obj) => gtabs.includes(obj.label)); console.log(result);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

您也可以將somefilter一起使用。

const result = GuideTabs.filter((tab) => gtabs.some((guideTab) => guideTab === tab.label));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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