我有以下JSON结构:
[{
"type": 0,
"id": 1,
"children": [{
"type": 0,
"id": 14
},
{
"type": 0,
"id": 1
}]
},
{
"type": 0,
"id": 16,
"children": [{
"type": 0,
"id": 15,
"children": [{
"type": 0,
"id": 13
},
{
"type": 0,
"id": 17
},
{
"type": 0,
"id": 18
}]
}]
}]
如何从JSON中删除数据"type":0,"id":15
?
答案 0 :(得分:1)
对于javascript,
var input = [{"type":0,"id":1,"children":[{"type":0,"id":14},{"type":0,"id":1}]},{"type":0,"id":16,"children":[{"type":0,"id":15,"children":[{"type":0,"id":13},{"type":0,"id":17},{"type":0,"id":18}]}]}];
function filter(input) {
return input.filter( (obj) => {
if (obj.children) obj.children = filter(obj.children);
return !(obj.type === 0 && obj.id === 15);
});
}
var result = filter(input);
console.log(result);
这样
type = 0
&对于id = 15
内的任何级别层次结构,children
将被递归删除。
答案 1 :(得分:0)
通过查看您的JSON代码,您可以在数组中拥有2个顶级对象/属性。在其中一个对象中包含一个内部属性,其中包含要删除的对象,即{type:0,id:15,children:[....]}
每次有嵌套属性时,您都必须使用点语法或括号访问该内部属性的值。 例如,这是您的JSON数据:
[
{
"type": 0,
"id": 1,
"children": [
{
"type": 0,
"id": 14
},
{
"type": 0,
"id": 1
}
]
},
{
"type": 0,
"id": 16,
"children": [
{
"type": 0,
"id": 15,
"children": [
{
"type": 0,
"id": 13
},
{
"type": 0,
"id": 17
},
{
"type": 0,
"id": 18
}
]
}
]
}
]
假设你的整个数组被称为“soda”: 你这样访问它:
soda [1] .children [0],这将成为获取数据的路径(数组通过索引记住它们的内部“部分”,如[0]或[1]或[55]和对象用点表示法得到它们的内部部分。然后像我的例子那样使用属性名称。
苏打水[1]因为苏打水是一个阵列。然后它使用点符号。孩子,因为孩子是苏打水的属性[1]。由于soda [1] .children再次成为一个数组,我们必须再次使用索引,并且你的对象是该数组中唯一的元素(记住javascript开始时0索引,意思是0是第一项,1是第二项,等等)所以我们必须再次使用对数组使用索引的规则,这就是soda [1] .children [0]并且你想要你的对象!