javascript - 查询大型 JSON 对象的条件

标签 javascript json

我正在尝试解析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
})

效果很好,但在我看来,这种查询相当常见......是否有现有的内置函数可以完成这项工作?

最佳答案

您的代码似乎以正确的方式工作,尽管您可以递归地使用 mapfilter 方法之间的组合。这样,您将获得更高效的代码。 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/

相关文章:

ios - 使用 Alamofire、ImageLoader 在 swift 中解析 Json 来解析键值以及具有图像的 TableView 中的对象

javascript - 使用 d3.js 在 svg 上创建关闭按钮

javascript - 为 jasmine(-headless-webkit) 运行的文档样式规范

javascript - 如何只在android设备中显示DIV?

json - 如何从 XSLT 中的 JSON 中提取数据?

java - 如何从Java导入JSON文件到mongodb

javascript - VueJS v-if json中的json值为true

javascript - 自定义警报框不是 jquery 在哪里?

java - com.fasterxml.jackson.databind.exc.MismatchedInputException : Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token

php - ajax,语法错误: unexpected token A in json at position 0