Javascript массив json преобразование в родительский дочерний json объект - PullRequest
0 голосов
/ 12 марта 2020
 var rawData1 = {
  root: [
    "children": [
      {
        "country": "Japan",
        "children": [
          {
            "C1": "Japan 225343-17510-ADV HIV"
          },
          {
            "C2": "Japan 245123-142567"
          }
        ]
      },
      {
        "country": "EU",
        "children": [
          {
            "C1": "345112-765431-HID
          },
          {
            "C2": "22535"
          },
          {
            "C3": "EU 22535"
          },
          {
            "C4": "EU 8988-90"
          },
          {
            "C5": "EU 8988-90"
          }
        ]
      }, {
        "country": "Canada",
        "children": [
          {
            "C1": "Canada 345112-765431-HID"
          }
        ]
      }, {
        "country": "Switzerland",
        "children": [
          {
            "C1": "Switzerland 345112-765431-HID"
          }, {
            "C2": "Switzerland 22535"
          }, {
            "C3": "Switzerland 8988-90"
          }, {
            "C4": "Switzerland 8988-90"
          }
        ]
      }, {
        "country": "US",
        "children": [
          {
            "C1": "US 345112-765431-HID",
          }, {
            "C2": "US 22535"
          }, {
            "C3": "US 46489"
          }
        ]
      }
    ]
  ]
};

Я хочу преобразовать массив rawData в массив rawData1.

rawData1 - это родитель-потомок в форме Json.

Родитель и ребенок определяются на основе только ключ

(НЕТ ключ только значение ключа Например: если ключ является страной, то он является родительским или дочерним), если ключ C1 или C2 и т. д. c

, то это дочерний массив с каждым отдельным объектом со значением ключа. Вы можете увидеть код для более подробной информации в

{

root: {

«страна»: «Япония»

дети: [

            {"C1":"879"}

            {"C2":"jk"}

            children:[

                            {"C3":"Code","C4":"Codei"}, //for C3 and C4 create nested children to above children

                            {"C5":"Code","C6":"Codei"} // if data is present C5 andC6



                            ]

]

}

Это хочу, я хочу, чтобы ваша переменная вызывала childrenArray внутри этого, я хочу еще один массив с именем ChildrenSubArray

1 Ответ

0 голосов
/ 12 марта 2020

Вот простое решение с использованием for in l oop в функции карты:

var rawData = {
    results: [{
      "country": "Japan",
      "C1": "Japan 225343-17510-ADV HIV",
      "C2": "Japan 245123-142567"
  
    }, {
      "country": "EU",
      "C1": "345112-765431-HID",
      "C2": "22535",
      "C3": "EU 22535",
      "C4": "EU 8988-90",
      "C5": "EU 8988-90"
    }, {
      "country": "Canada",
      "C1": "Canada 345112-765431-HID",
    }, {
      "country": "Switzerland",
      "C1": "Switzerland 345112-765431-HID",
      "C2": "Switzerland 22535",
      "C3": "Switzerland 8988-90",
      "C4": "Switzerland 8988-90"
    }, {
      "country": "US",
      "C1": "US 345112-765431-HID",
      "C2": "US 22535",
      "C3": "US 46489"
    }]
  };

var results = rawData.results;

children = results.map(function(x) {
    var childrenArray = [];
    for(const child in x) {
        if(child != "country") {
            childrenArray.push({
                [child]: x[child]
            })
        }
    }

    return {
        "country": x.country,
        "children": childrenArray
    }
})

var rawData1 = {
    root: [{
        "children": children
    }]
}

console.log(JSON.stringify(rawData1, null, 4));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...