Javascript 如何过滤嵌套的json数据

Javascript 如何过滤嵌套的json数据,javascript,Javascript,我有一个这种格式的json数据: [ {'name':'foo1','id':'1'}, {'name':'foo2','id':'2',children:[ {'name':'foo3','id':'3',children: [ {'name':

我有一个这种格式的json数据:

[
  {'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;iconsole.log(filteredData)我创建了一个函数,该函数采用一个对象数组,并在x levels deep(参数
maxDepth
)时使用递归清空子数组。 我使用curry跟踪所有对象的每个递归的级别(
xDeep

函数removeDeepChildren(数据,最大深度){
var xDeep=1;
返回函数(arr){
对于(变量x=0;x控制台日志(数据)你能展示一下你的尝试吗?你能详细解释一下吗?因为问题是从一个非常具体的问题“从foo3中删除包含foo4的子项”开始的,但是稍后修复的行为应该是动态的,因为您有无限嵌套的子项?具体什么时候应该删除?如果您无法轻松检索要删除的数据,可能这不是表示数据的最佳结构?在“无限”上嵌套级别您想删除从最低级别开始的所有内容还是从级别2开始向下的所有内容?@Botimoo我只想删除从级别2开始向下的所有内容,但我需要根据名称筛选数组,并从原始数组中删除特定对象。好的,伙计。我想你应该像我在JSFIDLE上做的那样做。