我需要重新格式化下面的JSON,以便使用级别层次结构格式化数据,它目前看起来像这样:
[
{
"level": "level 1",
"name": "HTML5"
},
{
"level": "level 1",
"name": "CSS3"
},
{
"level": "level 1",
"name": "SASS/LESS"
},
{
"level": "level 1",
"name": "Git"
},
{
"level": "level 2",
"name": "MySQL"
},
{
"level": "level 2",
"name": "Server Management (using Apache/Nginx)"
},
{
"level": "level 2",
"name": "CMS Templating (Perch, Wordpress, Symfony, Laravel)"
},
{
"level": "level 2",
"name": "Illustration"
},
{
"level": "level 3",
"name": "OOP PHP"
},
{
"level": "level 3",
"name": "CMS Templating (Drupal, EpiServer, Umbraco)"
},
{
"level": "level 3",
"name": "3d Modelling"
}
]
但我希望它更嵌套,以便每个技能按级别分组。我尝试了以下但我不认为我已经正确地写了它,因为我无法看到访问关卡名称的好方法。
[
{
"level": {
"expert" : [
{ "name" : "HTML5" },
{ "name" : "CSS3" },
{ "name" : "SASS/LESS" },
{ "name" : "Git" }
],
"middle-weight" : [
{ "name" : "MySQL" },
{ "name" : "Server Management (using Apache/Nginx)" },
{ "name" : "CMS Templating (Perch, Wordpress, Symfony, Laravel)" },
{ "name" : "Illustration" }
],
"competent": [
{ "name" : "OOP PHP" },
{ "name" : "CMS Templating (Drupal, EpiServer, Umbraco)" },
{ "name" : "3d Modelling" }
]
}
}
]
有人可以建议格式化JSON的最佳方法,以便最有意义。
注意:为了清楚起见,我并没有就如何遍历数据寻求帮助,我正在寻求最佳解决方案的帮助。这是我以前使用的基于表格的数据的一种非常不同的思维方式。
答案 0 :(得分:1)
更直接的方法是使用level1
,level2
,level3
作为数组属性。
{
"level1": [
{
"name": "HTML"
},
{
"name": "CSS3"
}
],
"level2": [
{
"name" : "MySQL"
}
],
"level3": [
{
"name": "3d Modelling"
}
]
}
您可以使用level1[0].name
例如
但是取决于用例,如果你的关卡对象需要更多的信息,那就像aove一样,所以你可以扩展它们。如果您只需要字符串,您也可以简化它并直接在数组中使用技能的字符串:
{
"level1": [
"HTML",
"CSS3"
],
"level2": [
"MySQL",
"Server Management (using Apache/Nginx)"
],
"level3" : []
}
在这种情况下,您只需直接使用level1[0]
即可获取技能。
答案 1 :(得分:-1)
准备新的结果对象
var result = { level: { expert: [], competent: [] } };
迭代数组
for (var i = 0, max = array.length; i < max; i += 1) {}
检查每个对象的级别值
switch (array[i].level) { case 'level 1': //... }
根据开关
推送相应属性中的对象
result.level.expert.push({ name: array[i].name })
输出为JSON:
JSON.stringify(result);