【发布时间】:2020-11-20 16:53:34
【问题描述】:
我有一个 JSON 父子递归结构,如下例所示。
如何过滤此 JSON 列表以仅排除与所选索引对应的对象?
familyTree =[
{
name: "parent",
index:"0",
age:"50,
children: [
{
name: "first child",
index:"0.0",
age:"30",
children: [
{
name: "first grandChild",
index:"0.0.0",
age:"5"
},
{
name: "second grandChild",
index: "0.0.1",
age:"2"
}
]
},
{
name: "second child",
index:"0.1",
age:"24",
}
]
}
]
例如如果我想排除索引为 "0.0.1" 的元素,我的结果将是:
familyTree =[
{
name: "parent",
index:"0",
children: [
{
name: "first child",
index:"0.0",
age:"30",
children: [
{
name: "first grandChild",
index:"0.0.0",
age:"5"
}
]
},
{
name: "second child",
index:"0.1",
age:"24",
}
]
}
]
我尝试过使用 ES6 函数 filter() 但它可能是错误的用法,因为它不起作用
const elemToRemove= familyTree[0].children[0].children[1]; //index: 0.0.1
familyTree.filter(
(elem) => JSON.stringify(elem) === JSON.stringify(elemToRemove)
);
感谢您的帮助
【问题讨论】:
-
但您的结果中仍然包含索引为 0.0.1 的元素?
-
我的错,我会编辑问题
-
您会一直使用
index或任何键进行过滤吗? -
总是按索引
-
没有 JSON 数组这样的东西。 JSON 始终是一个字符串。你有一个对象数组。
标签: javascript json object ecmascript-6