Как создать вложенные массивы, используя следующие данные JSON - PullRequest
0 голосов
/ 24 сентября 2018

Я хочу создать вложенные массивы, используя следующие данные json, но есть ошибка, и я не могу ее исправить.Я создал образец с помощью jsfiddle.Вот мой пример js и код ниже:

http://jsfiddle.net/r63oxcsk/

Результат, который я хочу достичь, следующий:

Имя:
Дон
Джоан
Фамилия:
Дрейпер
Харрис
Кэмпбелл

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);
   }
 })

1 Ответ

0 голосов
/ 24 сентября 2018

Вы можете уменьшить массив верхнего уровня до объекта, имя свойства которого - OrgName, которое является массивом, сопоставленным с OrgName из массива orgComboInfo.

Reduce начинается с пустого объекта {} и каждой итерации егораспространяет результаты последней итерации с помощью нового свойства с именем OrgName, которое представляет собой массив orgComboInfo, сопоставленный только с именем OrgName.

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",
    }
   ]
 }
]

console.log(
    Message.reduce((result, item) => ({...result, [item.OrgName]: item.orgComboInfo.map(i => i.OrgName) }), {})
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...