[英]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; }
您也可以將some
與filter
一起使用。
const result = GuideTabs.filter((tab) => gtabs.some((guideTab) => guideTab === tab.label));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.