javascript - 数组过滤方法中的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}]
谁能告诉我我错过了什么?谢谢
解决方案
看看为什么它不起作用,然后大大简化它
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))
推荐阅读
- php - ArgumentCountError 函数 App\Http\Controllers\Shop\CartController::addToCart() 的参数太少
- reactjs - 通过创建动态选择来响应 useRef 钩子
- python-3.x - 在不到 1 秒的时间内计算出大数的算术序列的总结果
- python - 允许用户在 DJango 中拥有他们的产品
- excel - 当值为零时隐藏列中的单元格
- sql - 翻译 unix 风格的按位整数的 Oracle 查询
- css - 如何使用 React 和 Material io 修复 Ipad 或移动设备上的焦点背景颜色
- string - 如何根据给定的要求拆分/标记字符串?
- reactjs - React Lifting State Up - 为什么在父级重新渲染时不调用子级的构造函数?
- c++ - 我在 Linux VSCode (gcc) 和 Windows Clion (visual c++) 上的相同代码有不同的输出