javascript - 迭代嵌套 JSON

标签 javascript json

我有嵌套对象,例如

{
    "root": {
        "company": [{
                "id": "Google",
                "contact": [{
                        "field": "name",
                        "value": "Larry Page"
                    }, {
                        "field": "flag",
                        "value": ""
                    }, {
                        "field": "initial",
                        "value": "LP"
                    }
                ]
            }, {
                "id": "Snap",
                "contact": [{
                        "field": "name",
                        "value": "Evan Spiegel"
                    }, {
                        "field": "flag",
                        "value": "true"
                    }, {
                        "field": "initial",
                        "value": "ES"
                    }
                ]
            }, {
                "id": "Airbnb",
                "contact": [{
                        "field": "name",
                        "value": "Brian Chesky"
                    }, {
                        "field": "flag",
                        "value": ""
                    }, {
                        "field": "initial",
                        "value": "BC"
                    }
                ]
            }
        ]
    }
}

我需要根据标志值创建 2 个单独的列表 - 一个用于 flag = "",另一个用于 flag = true

预期结果是 2 个列表:

var flagisTrue = {ES}
var flagisEmpty = [{"name":"Larry Page", "initial": "LP"}, {"name":"Brian Chesky", "initial": "BC"}]

其中 flagisTrue 仅包含首字母,而 flagisEmpty 包含名称和首字母。

如何在 JavaScript 中使用此结构?

最佳答案

试试这个。希望它会有所帮助。

var object = {
    "root" : {
        "company" : [{
                "id" : "Google",
                "contact" : [{
                        "field" : "name",
                        "value" : "Larry Page"
                    }, {
                        "field" : "flag",
                        "value" : ""
                    }, {
                        "field" : "initial",
                        "value" : "LP"
                    }
                ]
            }, {
                "id" : "Snap",
                "contact" : [{
                        "field" : "name",
                        "value" : "Evan Spiegel"
                    }, {
                        "field" : "flag",
                        "value" : "true"
                    }, {
                        "field" : "initial",
                        "value" : "ES"
                    }
                ]
            }, {
                "id" : "Airbnb",
                "contact" : [{
                        "field" : "name",
                        "value" : "Brian Chesky"
                    }, {
                        "field" : "flag",
                        "value" : ""
                    }, {
                        "field" : "initial",
                        "value" : "BC"
                    }
                ]
            }
        ]
    }
}

var flagisTrue = [], flagisEmpty = [];
for (var i = 0; i < object.root.company.length; i++) {
    var contact = object.root.company[i].contact;
    var result = {};
    for (var j = 0; j < contact.length; j++)
        result[contact[j].field] = contact[j].value;

    if (result["flag"])
        flagisTrue.push({
            name : result["name"],
            initial : result["initial"]
        });
    else
        flagisEmpty.push({
            name : result["name"],
            initial : result["initial"]
        });
}

console.log(flagisEmpty);
console.log(flagisTrue);

关于javascript - 迭代嵌套 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42358505/

相关文章:

java - 处理 JSON 时出现异常

javascript - RamdaJS : After an object operation my keys are getting re-ordered alphabetically? 是预期的吗?

arrays - 快速将数组追加到数组

json - MongoDB ObjectId的Jackson JSON反序列化

javascript - 触发点击事件 jquery mobile

javascript - AngularJS:如何使用angular从json文件中读取数据

Python:如何从 UDP 接收数据包中获取 JSON 对象

javascript - 提交可变数量的数组以强调 _.difference

javascript - 按钮单击事件触发错误的事件处理程序

javascript - 读取本地文本文件 JavaScript