Javascript 如何使用以下json数据创建嵌套数组

Javascript 如何使用以下json数据创建嵌套数组,javascript,jquery,arrays,json,frontend,Javascript,Jquery,Arrays,Json,Frontend,我想使用以下json数据创建嵌套数组,但有一个错误,我无法修复它。我已经用JSFIDLE创建了一个示例。下面是我的js示例和代码 我想要达到的结果如下 名称: 不要 琼 姓氏: 德雷珀 哈里斯 坎贝尔 var消息=[ { “OrgID”:“11”, “组织名称”:“名称:”, “orgComboInfo”:[ { “OrgID”:“11_8”, “OrgName”:“Don”, }, { “OrgID”:“11_15”, “OrgName”:“Joan”, } ] }, { “OrgID”:“

我想使用以下json数据创建嵌套数组,但有一个错误,我无法修复它。我已经用JSFIDLE创建了一个示例。下面是我的js示例和代码

我想要达到的结果如下

名称:
不要

姓氏:
德雷珀
哈里斯
坎贝尔

var消息=[
{
“OrgID”:“11”,
“组织名称”:“名称:”,
“orgComboInfo”:[
{
“OrgID”:“11_8”,
“OrgName”:“Don”,
},
{
“OrgID”:“11_15”,
“OrgName”:“Joan”,
}
]
},
{
“OrgID”:“12”,
“原名”:“姓氏:”,
“orgComboInfo”:[
{
“OrgID”:“12_2699”,
“OrgName”:“Draper”,
“组织类型”:“12”
},
{
“OrgID”:“12_2703”,
“OrgName”:“Harris”,
},
{
“OrgID”:“12_2666”,
“OrgName”:“坎贝尔”,
}
]
}
]
$(文档).ready(函数(){
var arrayB=[];
var arrayA=[];

对于(var i=0;i您可以将顶级数组缩减为属性名为OrgName的对象,该对象是从orgComboInfo数组映射到OrgName的数组

Reduce从一个空对象{}开始,每次迭代它都会使用一个名为OrgName的新属性传播上一次迭代的结果,OrgName是映射到OrgName的orgComboInfo数组

var消息=[
{
“OrgID”:“11”,
“组织名称”:“名称:”,
“orgComboInfo”:[
{
“OrgID”:“11_8”,
“OrgName”:“Don”,
},
{
“OrgID”:“11_15”,
“OrgName”:“Joan”,
}
]
},
{
“OrgID”:“12”,
“原名”:“姓氏:”,
“orgComboInfo”:[
{
“OrgID”:“12_2699”,
“OrgName”:“Draper”,
“组织类型”:“12”
},
{
“OrgID”:“12_2703”,
“OrgName”:“Harris”,
},
{
“OrgID”:“12_2666”,
“OrgName”:“坎贝尔”,
}
]
}
]
console.log(
Message.reduce((result,item)=>({…result,[item.OrgName]:item.orgComboInfo.map(i=>i.OrgName)}),{})

)
我已经编辑了答案,使用reduce使其符合您想要的形状
var Message = [
{
  "OrgID": "11",
  "OrgName": "Name:",
  "orgComboInfo": [
    {
      "OrgID": "11_8",
      "OrgName": "Don",
    },
    {
      "OrgID": "11_15",
      "OrgName": "Joan",
    }
  ]
},
{
  "OrgID": "12",
  "OrgName": "Surname:",
  "orgComboInfo": [
    {
      "OrgID": "12_2699",
      "OrgName": "Draper",
      "OrgType": "12"
    },
    {
      "OrgID": "12_2703",
      "OrgName": "Harris",
    },
    {
      "OrgID": "12_2666",
      "OrgName": "Campbell",
    }
   ]
 }
]

$( document ).ready(function() {
 var arrayB = [];
 var arrayA = [];

 for (var i=0; i<Message.length; i++) {
     var name = Message[i].OrgName;
     arrayA.push(name);

        for (var j=0; j < Message[i].orgComboInfo.length; j++) {
           var surname = Message[i].orgComboInfo[j].OrgName;
                arrayB.push(surname);
        }

        var total = arrayA.concat(arrayB);
        console.log(total);
   }
 })