javascript - 如何从数组中排除数组以进行嵌套条件
问题描述
给定数组,如何过滤掉与 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);
解决方案
反转测试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);
推荐阅读
- javascript - 如何在 REACT JS 中为 onChange 事件更新 JSON 对象的状态?
- android - 如何通过 Android 上的意图启动“谷歌地图导航”
- bash - 采购 ./bashrc 时,命令错误“find: missing argument to `-exec'”会导致“bash: cd: too many arguments”
- jquery - 数量输入变化 - 捕获先前的值
- maven - Jenkins 版本无法识别节点 Js。2.138.3
- bash - 拦截并阻止命令在 bash 中运行
- angular - 如何在 d3 条形图中集中条形?
- android - 如何从片段中隐藏 Recycleview 的行项
- hibernate - 如何验证 JPA 实体中的电子邮件字符串
- ios - 为什么在以下情况下,贝塞尔路径中的 hitTest / tap 检测会产生不准确的结果?