Javascript 如何过滤嵌套的json数据
我有一个这种格式的json数据:Javascript 如何过滤嵌套的json数据,javascript,Javascript,我有一个这种格式的json数据: [ {'name':'foo1','id':'1'}, {'name':'foo2','id':'2',children:[ {'name':'foo3','id':'3',children: [ {'name':
[
{'name':'foo1','id':'1'},
{'name':'foo2','id':'2',children:[
{'name':'foo3','id':'3',children:
[
{'name':'foo4','id':'4'}
]
},
]
},
{'name':'foo','id':'1'},
]
我想从名为foo4
的foo3
中删除子数组。并返回一个完整的数组,其中不包含子数组
假设:我有一个名称foo4
,基于此值,我想从子键中删除对象
在筛选之前:
{'name':'foo3','id':'3',children:
[
{'name':'foo4','id':'4'}
]
},
在筛选后:
{ 'name':'foo3','id':'3',children:[] },
此json对象可以有无限嵌套子对象。我想不出如何过滤数组。递归最适合这里吗 不要删除数组中的子数组,因为您说过它将出现在许多数组中。
您需要做的是,在javascript或任何服务器端语言中,如果您的数组有子数组,则可以检查此条件,然后什么也不做 如果您只需要删除级别2以下的所有内容,我不认为递归是可行的方法。您应该只检查每个对象的子对象,如果它们有自己的子对象,只需删除它们即可
var数据=[
{'name':'foo1','id':'1'},
{'name':'foo2','id':'2',子项:[
{'name':'foo3','id':'3',子项:
[
{'name':'foo4','id':'4'}
]
},
]
},
{'name':'foo6','id':'6',子项:[
{'name':'foo7','id':'7',子项:
[
{'name':'foo8','id':'8',子项:[
{'name':'foo9','id':'9'}
]
}
]
},
]
},
{'name':'foo','id':'1'},
];
var filteredData=数据;
对于(变量i=0;i console.log(filteredData)代码>我创建了一个函数,该函数采用一个对象数组,并在x levels deep(参数maxDepth
)时使用递归清空子数组。
我使用curry跟踪所有对象的每个递归的级别(xDeep
)
函数removeDeepChildren(数据,最大深度){
var xDeep=1;
返回函数(arr){
对于(变量x=0;x 控制台日志(数据)代码>你能展示一下你的尝试吗?你能详细解释一下吗?因为问题是从一个非常具体的问题“从foo3中删除包含foo4的子项”开始的,但是稍后修复的行为应该是动态的,因为您有无限嵌套的子项?具体什么时候应该删除?如果您无法轻松检索要删除的数据,可能这不是表示数据的最佳结构?在“无限”上嵌套级别您想删除从最低级别开始的所有内容还是从级别2开始向下的所有内容?@Botimoo我只想删除从级别2开始向下的所有内容,但我需要根据名称筛选数组,并从原始数组中删除特定对象。好的,伙计。我想你应该像我在JSFIDLE上做的那样做。