我有一个JSON对象的以下代码段,其中包含3500条记录。
[
{
"use:firstName": "Bob",
"use:lastName": "Smith",
"use:categoryId": 36,
"use:company": "BobSmith",
"use:webExId": "Bob.Smith@email.com",
"use:address": {
"com:addressType": "PERSONAL",
"com:city": "US-TX",
"com:country": 1
}
},
{
"use:firstName": "Jane",
"use:lastName": "Doe",
"use:categoryId": 36,
"use:webExId": "Jane.Doe@email.com",
"use:address": {
"com:addressType": "PERSONAL",
"com:city": "US-CA",
"com:country": "1_1"
}
}
{
"use:firstName": "Sam",
"use:lastName": "Sneed",
"use:categoryId": 36,
"use:webExId": "Sam.Sneed@email.com",
"use:address": {
"com:addressType": "PERSONAL",
"com:city": "US-CA",
"com:country": "1_1"
}
}
]
我正在使用NodeJS,因此我一直在寻找最佳方法来:
1.遍历['use:address']['com:city'
以找出并标识所有城市。 (在上面的示例中,在提供的三个记录中,我有两个: US-TX 和 US-CA )
2.然后确定每个城市匹配多少条记录(在上面的示例中,我将有 US-TX :1和 US-CA :2)
我唯一拥有的代码是简单的部分,它通过JSON数据进行forEach
循环,定义userCity
变量(以使其更容易使用),然后登录以对结果进行控制台(确实没有必要,但是我这样做是为了确认我正确地遍历了JSON)。
function test() {
const webexSiteUserListJson = fs.readFileSync('./src/db/webexSiteUserDetail.json');
const webexSiteUsers = JSON.parse(webexSiteUserListJson);
webexSiteUsers.forEach((userDetails) => {
let userCity = userDetails['use:address']['com:city'];
console.log(userCity);
})
};
我一直在不停地寻找有关该主题的帮助,可能无法正确提出我的问题。任何建议都赞赏如何:
1.遍历['use:address']['com:city'
以找出并标识所有城市。
2.然后确定每个城市匹配多少条记录(在上面的示例中,我将有 US-TX :1和 US-CA :2)
谢谢!
答案 0 :(得分:1)
您可以将⇒ pipenv --python /Users/<Your User>/.pyenv/versions/3.6.3/bin/python3.6 shell
数组reduce放入由城市键控的对象中,其中每个值是城市出现的次数。像下面这样的东西应该起作用。
webexSiteUsers
const counts = webexSiteUsers.reduce((countMemo, userDetails) => {
let userCity = userDetails['use:address']['com:city'];
if (countMemo[userCity]) {
countMemo[userCity] = countMemo[userCity] + 1;
} else {
countMemo[userCity] = 1;
}
return countMemo;
}, {});
将是一个看起来像这样的对象。
counts