首页 > 解决方案 > 如何从数组中排除数组以进行嵌套条件

问题描述

给定数组,如何过滤掉与 layer.id 匹配的数组?

nodes = [
    {id: '1', layer: {id: 'a'}},
    {id: '4', layer: {id: 'b'}},
    {id: '2'},
    {id: '3'},
]

argument = 'a'

// OUTPUT
[
    {id: '4', layer: {id: 'b'}},
    {id: '2'},
    {id: '3'},
]

该语句以某种方式从数组中清除了 2 和 3 个元素,因为我正在检查 node.layer 字段。

nodes.filter(node => node.layer && node.layer.id !== id) // TO-DO: How do I flip..?
    .map(node => node.id);

标签: javascript

解决方案


反转测试node.layer并使用||而不是&&.

const nodes = [
    {id: '1', layer: {id: 'a'}},
    {id: '4', layer: {id: 'b'}},
    {id: '2'},
    {id: '3'},
];

argument = 'a';
const result = nodes.filter(node => !node.layer || node.layer.id != argument).map(({id}) => id);
console.log(result);


推荐阅读