【发布时间】:2021-03-02 13:21:23
【问题描述】:
假设我有两个数组
从这里我想用 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}]
谁能告诉我我错过了什么?谢谢
【问题讨论】:
-
你的
return true;是 insidefor循环体,所以如果value.id !== arr2[i]为假,它会在第一次循环迭代时运行。将它移到 在for循环之后,这样当没有任何条目匹配时,您只需要return false;。或者你可以使用some:.filter(value => arr2.some(v => v === value.id))
标签: javascript arrays