如何通过来自另一个对象数组的数据过滤对象数组? [关闭]

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

【讨论】:

以上是关于如何通过来自另一个对象数组的数据过滤对象数组? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据另一个对象数组过滤一个对象数组?

使用 NSPredicate 过滤对象中的数组

用另一个对象数组过滤对象数组

markdown 使用ramda通过嵌套值过滤对象数组:有时您无权访问后端,并且您希望过滤来自

无法根据另一个对象数组过滤对象数组

对象数组按另一个数组值过滤