NodeJS使用JSON遍历城市,返回每个城市的城市和用户

时间:2019-03-13 21:49:24

标签: node.js json object

我有一个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)

谢谢!

1 个答案:

答案 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