如何通过来自另一个对象数组的数据过滤对象数组? [关闭]
Posted
技术标签:
【中文标题】如何通过来自另一个对象数组的数据过滤对象数组? [关闭]【英文标题】:How can I filter an array of objects by data from another array of objects? [closed] 【发布时间】:2020-07-18 19:06:48 【问题描述】:请帮助理解如何实现这一点:
var filterAarray = [
id: 1, key: "fruits" ,
id: 2, key: "fruits" ,
id: 4, key: "vegetables" ,
];
var foodArray = [
fruits: [
id: 1, label: "Apple" ,
id: 2, label: "Cherry"
],
vegetables: [
id: 4, label: "Cucumber"
]
,
fruits: [
id: 1, label: "Apple" ,
id: 2, label: "Cherry" ,
id: 3, label: "Strawberry"
],
vegetables: [
id: 4, label: "Cucumber" ,
id: 5, label: "Tomato"
]
,
fruits: [
id: 2, label: "Cherry" ,
],
vegetables: [
id: 5, label: "Tomato"
]
];
我需要获取经过过滤的对象数组 foodArray,其中包含来自 filterAarray 的所有数据。 结果必须是:
[
fruits: [
id: 1, label: "Apple" ,
id: 2, label: "Cherry"
],
vegetables: [
id: 4, label: "Cucumber"
]
,
fruits: [
id: 1, label: "Apple" ,
id: 2, label: "Cherry" ,
id: 3, label: "Strawberry"
],
vegetables: [
id: 4, label: "Cucumber" ,
id: 5, label: "Tomato"
]
];
即如果 'foodArray' 的对象存在于数组 'filterAarray' 中,则必须显示它们
【问题讨论】:
【参考方案1】:这应该可行:
foodArray.filter(obj =>
filterArray.every(e => !!obj[e.key].find(unit => unit.id === e.id)),
);
总体思路:检查foodArray
中的每个对象。然后检查filterArray
中的每个 元素是否在key
的数组中找到。
看看:Array.filterArray.everyArray.find
【讨论】:
以上是关于如何通过来自另一个对象数组的数据过滤对象数组? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章