首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Node中查询深度嵌套的json?

如何在Node中查询深度嵌套的json?
EN

Stack Overflow用户
提问于 2021-04-10 21:39:00
回答 1查看 25关注 0票数 0

我这里有一个样例JSON,我想知道公司中使用node的开发人员的数量。

代码语言:javascript
复制
var data = {
         "company": {
      "unit-1":{
          "people":[
               {"person":"developer-1"},
               {"person":"developer-2"},
               {"person":"developer-3"}
          ]
        
      },
      "unit-2":{
          "people":[
                {"person":"developer-8"},
                {"person":"developer-9"},
                {"person":"developer-10"}
          ]
      }
    
   }}

我使用了npm json-query包来查询json的最深层部分。

代码语言:javascript
复制
var jsonQuery = require('json-query')
var countDev = 0 
var result = jsonQuery('company[**][*people]', {data: data}).value 
result.forEach(peep =>{
countDev+=1
})

console.log(`Company two has ${countDev} developers!`)

输出与预期一致,但这里唯一的问题是,我希望通过最深的密钥访问,即本例中的person。如何不通过密钥people直接访问,直接获取开发者。

任何其他的想法或库都将不胜感激。下面是记录的结果。

代码语言:javascript
复制
    result = [
  { person: 'developer-1' },
  { person: 'developer-2' },
  { person: 'developer-3' },
  { person: 'developer-8' },
  { person: 'developer-9' },
  { person: 'developer-10' }
]
EN

回答 1

Stack Overflow用户

发布于 2021-04-10 22:43:48

在纯JavaScript中,不使用任何模块,解决方案将如下所示

代码语言:javascript
复制
let res = [];
for(val in data.company) res = [...res, ...data.company[val].people]
console.log(res)

请注意,对于大对象,这将具有较差的性能,这将具有较好的性能:

代码语言:javascript
复制
const keys = Object.keys(data.company);
let res = [];
for(let i = 0, n = keys.length; i < n; i++){
   res = [...res, ...data.company[keys[i]].people ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67035005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档