javascript - 如何过滤javascript中嵌套数组中存在的对象数组
问题描述
我想知道如何删除deleted
嵌套对象数组中的子键中的状态,在javascript中,下面的代码返回不能返回未定义错误的过滤器,我有obj
,子键应该只包含状态活动;
var obj = [
{id:1, label: "sample", children: [{id: 0, status: "Active", name: "xyz"}, {id: 1, status: "Deleted", name: "abc"}]}
{id:2, label: "example"},
{id:3, label: "details", children: [{id:1, status: "Active", name: "finance"}]}
]
var result = removeDeleted(obj);
function removeDeleted(obj){
if (obj.length > 0) {
var list= obj.map(e => {
e.children = e.children.map(child => {
child.children = child.children.filter(c =>
c['status'] !== "Deleted"
);
return child
});
return e
});
return list;
}
}
Expected Output:
[
{id:1, label: "sample", children: [{id: 0, status: "Active", name: "xyz"}]}
{id:2, label: "example"},
{id:3, label: "details", children: [{id:1, status: "Active", name: "finance"}]}
]
解决方案
您可以尝试以下方法:
var obj = [
{id:1, label: "sample", children: [{id: 0, status: "Active", name: "xyz"}, {id: 1, status: "Deleted", name: "abc"}]},
{id:2, label: "example"},
{id:3, label: "details", children: [{id:1, status: "Active", name: "finance"}]}
]
var result = removeDeleted(obj);
console.log(result);
function removeDeleted(obj){
return obj.map(i => {
if(i.children){
var c = i.children.filter(j => j.status != 'Deleted');
return {id: i.id, label:i.label, children:c};
}
else return i;
});
}
推荐阅读
- python-3.x - 使用python近似梯度
- c++ - 如何在 Qt 上使用带有 if 语句的组合框?
- javascript - 能够更改 url 但内容(react-router)
- assembly - Brainfuck解释器无法处理某些代码,而每条指令都得到了照顾
- php - 如何在 PHP(laravel)中模拟没有类的函数?
- java - C# 和 Java 中的 AES 加密文件
- java - 如何比较和排序 TreeSet 中的项目?
- kotlin - 用suspendCoroutine包装异步代码与用暂停构建器同步代码
- java - 带有 Kotlin 和 Jackson 的 @JsonView 注释的 Micronaut 不起作用
- python - Python - 从 .PDF 文件中提取图表