迭代嵌套的JSON(Iterate nested 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中使用此结构?
I have nested object like
{ "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" } ] } ] } }And i need to create 2 separate lists based on the flag values - one for flag = "" and another for flag = true.
Expected results are the 2 lists:
var flagisTrue = {ES} var flagisEmpty = [{"name":"Larry Page", "initial": "LP"}, {"name":"Brian Chesky", "initial": "BC"}]where flagisTrue only contains the initial while flagisEmpty contains the name as well as the initial.
How do I work this structure in 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);Try this one. Hope it will help.
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);更多推荐
发布评论