我这里有一个样例JSON,我想知道公司中使用node的开发人员的数量。
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的最深层部分。
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直接访问,直接获取开发者。
任何其他的想法或库都将不胜感激。下面是记录的结果。
result = [
{ person: 'developer-1' },
{ person: 'developer-2' },
{ person: 'developer-3' },
{ person: 'developer-8' },
{ person: 'developer-9' },
{ person: 'developer-10' }
]发布于 2021-04-10 22:43:48
在纯JavaScript中,不使用任何模块,解决方案将如下所示
let res = [];
for(val in data.company) res = [...res, ...data.company[val].people]
console.log(res)请注意,对于大对象,这将具有较差的性能,这将具有较好的性能:
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 ]
}https://stackoverflow.com/questions/67035005
复制相似问题