我正在尝试解析a large JSON object对于特定条件
我当前的方法是设置递归过滤器:
function filter(obj,fn,items){
//Initialise items array
if(items==undefined)
items = []
//Filter for specific child objects
if(obj.children!=undefined){
obj.children.forEach(function(element){
if(fn(element)){
items.push(element)
}
filter(element,fn,items)
})
}
//Return items
return items
}
调用方式如下:
filter(data.items[0],function(el){
if(el.children != undefined)
return el.children.filter(function(el){
return el.toc_title == "Events"
}).length>0
})
效果很好,但在我看来,这种查询相当常见......是否有现有的内置函数可以完成这项工作?
最佳答案
您的代码似乎以正确的方式工作,尽管您可以递归地使用 map 和 filter 方法之间的组合。这样,您将获得更高效的代码。 Here您可以找到一些有关如何递归使用这些函数的示例。一个例子可以是:
let filteredFnc = (jsonObj) => jsonObj.filter(jsonObj => jsonObj.children !== undefined)
let map = (filteredFnc, obj) => !obj.length ? [] : [filteredFnc(obj[0])].concat(map(filtered, obj), obj.slice(1)));
关于javascript - 查询大型 JSON 对象的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52631733/