通过键对json对象的嵌套属性重新排序

时间:2019-10-10 10:03:05

标签: json sorting object key nested-loops

{
  "color_group_01": {
    "blue_50": "#4080fb",
    "blue_40": "#6fa1fc",
    "blue_30": "#9dc2fd",
    "blue_20": "#cadefe",
    "blue_10": "#ebf4ff",
    "blue_100": "#011338",
    "blue_90": "#011d5f",
    "blue_80": "#022b8f",
    "blue_70": "#053fc4",
    "blue_60": "#165cfa"
  },
  "color_group_02": {
    "green_90": "#022d0d",
    "green_80": "#044317",
    "green_70": "#0e6027",
    "green_100": "#071908",
    "green_60": "#198038",
    "green_50": "#24a148",
    "green_40": "#42be65",
    "green_30": "#6fdc8c",
    "green_20": "#a7f0ba",
    "green_10": "#defbe6"
  }
}

我有一个如上所述生成的JSON文件。它有12个“ color_group_”对象。

我想做的是按键重新排序每个组中的属性,使其从10到100。并按顺序01-12保留“ color_group_”。结果如下:

{
  "color_group_01": {
    "blue_10": "#ebf4ff",
    "blue_20": "#cadefe",
    "blue_30": "#9dc2fd",
    "blue_40": "#6fa1fc",
    "blue_50": "#4080fb",
    "blue_60": "#165cfa",
    "blue_70": "#053fc4",
    "blue_80": "#022b8f",
    "blue_90": "#011d5f",
    "blue_100": "#011338"
  },
  "color_group_02": {
    "green_10": "#defbe6",
    etc...
  }
}

我正在努力做到这一点?可以帮忙吗?请没有jQuery解决方案:)

预先感谢

1 个答案:

答案 0 :(得分:0)

首先,您需要使用JSON.parse()将JSON加载到javascript对象中。但是,您的对象并不真正知道其键的排序,而是可以提取对象的键并进行相应的排序

const keysArray = Object.keys(yourObject).sort((a, b) => /* your sort function here */);

然后,您可以遍历这个keysArray,这将对您所有的键进行排序并从那里访问对象

keysArray.forEach(key => console.log(yourObject[key]));