首页 > 解决方案 > 如何使用 node.js 从 json 数组中获取新的数字列表

问题描述

给定这个 json 对象

{
    "contacts": [
        {
            "name": "Jane doe",
            "numbers": [
                {
                    "number": "07123456789"
                }
            ],
            "groups": [
                {
                    "group": "Everyone"
                },
                {
                    "group": "Exec"
                }
            ]
        }, 
        {
            "name": "John Smith",
            "numbers": [
                {
                    "number": "07987654321"
                }
            ],
            "groups": [
                {
                    "group": "Everyone"
                }
            ]
        }
    ]
}

如何返回组等于给定值的新电话号码数组。

因此,例如,我希望有一个“07123456789”数组,其中联系人组=“Exec”

此外,在 Group = "Everyone" 的地方,我希望有 2 个项目的数组:"07123456789" 和 "07987654321"

我试过了:

 var data = require('../data/data.json')

 var peopleInGroup = data.contacts.filter(function (value) {
     value.groups.filter(function (type) {
         return type.group === recipients[i];
     })
 });

收件人是一组“Everyone”、“Exec”、“Overseas”组

标签: arraysnode.jsfiltering

解决方案


这是一段代码,它创建了一个包含三组数字的 JSON:

final_data = {"Everyone": [], "Exec": [], "Overseas": [] }
data.contacts.forEach( (contact) => {
    contact.groups.forEach(group => {
        final_data[group.group].push(contact.numbers);
    })
})

console.log(final_data);

推荐阅读