首页 > 解决方案 > 数组过滤方法中的for循环

问题描述

假设我有两个数组

从这里我想用 arr2 条件过滤 arr1(假设 arr2 = arr1 id)。我已经尝试过这段代码,但只返回第一个条件。

const arr1 = [{
    id: 1,
    name: "Jhon"
  },
  {
    id: 2,
    name: "Barbara"
  },
  {
    id: 3,
    name: "Rio"
  }
];
const arr2 = [1, 2, 5];


const filter = (arr1, arr2) => {
  const output = arr1.filter(value => {
    for (let i = 0; i < arr2.length; i++) {
      if (value.id !== arr2[i]) {
        return false;
      }
      return true;
    }
  })
  console.log(output);
};

filter(arr1, arr2);
// output = [{id: 1, name: "Jhon"}]
// intended output [{id: 1, name: "Jhon"}, {id: 2, name: "Barbara}]

谁能告诉我我错过了什么?谢谢

标签: javascriptarrays

解决方案


看看为什么它不起作用,然后大大简化它

const arr1 = [{ id: 1, name: "Jhon" }, { id: 2, name: "Barbara" }, { id: 3, name: "Rio" } ];
const arr2 = [1, 2, 5];

const filter = (arr1, arr2) => arr1.filter(({id}) => arr2.includes(id))

console.log(filter(arr1,arr2))


推荐阅读