通过其他数组中的元素过滤数组对象

时间:2020-07-16 15:37:36

标签: javascript node.js arrays

我有一个看起来像

的数组
const toFilter = [1,4,5]

另一个具有类似结构的数组

const foo = [{id: 1, time:XXX}, {id:2, time:XXX}, {id: 3, time: XXX}.....]

我想从第二个数组中具有相同ID的元素中过滤掉第一个数组中的元素(例如,在上面的示例中,ID为1的第一个对象将被删除,如toFilter中所示,fooo看起来像[{id:2, time:XXX}, {id: 3, time: XXX}]

我的代码似乎不起作用:

const pos = result.data.filter((el) => toFilter.includes(!el.id))

4 个答案:

答案 0 :(得分:2)

您的negation放在错误的位置。您要检查toFilter是否不包含ID,而不是它是否包含ID的布尔值倒数。

const pos  result.data.filter((el) => !toFilter.includes(el.id))

const toFilter = [1,4,5]
const foo = [{id: 1, time:'XXX'}, {id:2, time:'XXX'}, {id: 3, time: 'XXX'}];
const pos = foo.filter((el) => !toFilter.includes(el.id));
console.log(pos);

答案 1 :(得分:1)

您可以这样操作:

let filteredArray = result.data.filter((el) => !toFilter.includes(el.id));

让我知道是否可行!

答案 2 :(得分:0)

const toFilter = [1,4,5]

const foo = [{id: 1, time:'asdf'}, {id:2, time:'asdf'}, {id: 3, time: 'asdf'}]

const result = foo.filter(el => !toFilter.includes(el.id))

答案 3 :(得分:0)

!在错误的位置!。

尝试...

const pos = result.data.filter((el) => !toFilter.includes(el.id))