Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何按另一个对象数组中的数据筛选对象数组?_Javascript_Typescript - Fatal编程技术网

Javascript 如何按另一个对象数组中的数据筛选对象数组?

Javascript 如何按另一个对象数组中的数据筛选对象数组?,javascript,typescript,Javascript,Typescript,请帮助理解如何实现这一点: 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

请帮助理解如何实现这一点:

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,它包含来自FilterArray的所有数据。 结果必须是:

[
  {
    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" }
    ]
  }
];
i、 e.如果“foodArray”的对象存在于数组“FilterArray”中,则必须显示它们

这应该可以:

foodArray.filter(obj=>
filterArray.every(e=>!!obj[e.key]。查找(unit=>unit.id==e.id)),
);
总体思路:检查
foodArray
中的每个对象。然后通过
键检查
是否在数组中找到
过滤器阵列
中的每个元素

看看: