重新格式化对象

时间:2016-03-18 11:41:33

标签: javascript

我有以下内容:

{
  "SOL": {
    "B": [
        "ABC",
        "DEF"
    ],
    "C": [
        "JKL",
        "MNO"
    ]
  }
}

我想读它:

{
  "SOL": [
    {
      "id": "B",
      "states": [
      {
        "id": "ABC"
      },
      {
        "id": "DEF"
      ]
    },
    {
      "id": "C",
      "states": [
      {
        "id": "JKL"
      },
      {
        "id": "MNO"
      }
      ]
    }
  ]
}

我设法给第二级提供了一个“id”键,但我无法弄清楚如何在每个州添加一个 - 我该怎么做?

代码:

object.SOL = Object.keys(object.SOL).map(function (k) {
    return { id: k, states: object.SOL[k] };
})

Here's a fiddle

2 个答案:

答案 0 :(得分:1)

object.SOL = Object.keys(object.SOL).map(function (k) {
    return { id: k, states: object.SOL[k].map(function(kk){ return {id:kk} }) };
})

答案 1 :(得分:1)

您可以使用其他mapstates重新映射到对象:

object.SOL = Object.keys(object.SOL).map(function (k) {
    return { 
        id: k, 
        states: object.SOL[k].map(function(i){
            return {id: i };
        })
    }
});

更新了小提琴:https://jsfiddle.net/ouybL99u/2/