【问题标题】:Javascript array json converting to parent child json objectJavascript数组json转换为父子json对象
【发布时间】:2020-03-12 12:33:11
【问题描述】:
 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形式的父子。

parent 和 Child 仅根据 key 决定

(不是键值唯一键,例如:如果键是国家,那么它是父级,否则它是子级)如果键是 C1 或 C2 等

那么它是子数组,每个单独的键值对象只有你可以看到更多细节的代码


非常感谢您的代码运行良好

现在我想要一个像 in 一样的孩子

{

根:{

“国家”:“日本”

孩子们:[

            {"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 的数组

【问题讨论】:

标签: javascript json object


【解决方案1】:

这是一个在 map 函数中使用 for in 循环的简单解决方案:

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

【讨论】:

  • 我想要一个像 children 一样的孩子>children>diamond like inside children Array 我想要一个数组名称 diamond 以及第一个孩子中带有国家键的更多值。
  • 我的结果与您在问题中所要求的完全一样。不知道你在说什么
  • 嗨 Nicolas Siegmundt 你可以看到我更新了问题
  • 嗨,尼古拉斯,请给出这个解决方案。我需要 childrenArray 下的一个孩子。它很欣赏你的所作所为
猜你喜欢
  • 2021-05-02
  • 2021-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 2012-07-21
  • 2020-10-02
相关资源
最近更新 更多