Javascript 将子组中的名称排序为组-重新构造json数据
我正在尝试重新构造JSON数据,将其传递给D3.js以创建树形图。下面的链接有虚拟数据。原始数据包括不同的水果/蔬菜名称和一些属性,如该水果的组(例如Javascript 将子组中的名称排序为组-重新构造json数据,javascript,d3.js,lodash,Javascript,D3.js,Lodash,我正在尝试重新构造JSON数据,将其传递给D3.js以创建树形图。下面的链接有虚拟数据。原始数据包括不同的水果/蔬菜名称和一些属性,如该水果的组(例如{name:apple,group1:tree-fruit}),但我想将水果名称分为子组,子组分为顶级组(例如,水果>tree-fruits>apple)。你会找到正确的结构,我试图在最后一行作为评论 目前我的问题是,组名重复了很多次,我无法找到一种方法来获取组3名称(可能还有4和5)一次,以便将其推送到新的数据结构中。您将在第145行找到逻辑错误
{name:apple,group1:tree-fruit}
),但我想将水果名称分为子组,子组分为顶级组(例如,水果>tree-fruits>apple)。你会找到正确的结构,我试图在最后一行作为评论
目前我的问题是,组名重复了很多次,我无法找到一种方法来获取组3名称(可能还有4和5)一次,以便将其推送到新的数据结构中。您将在第145行找到逻辑错误,但我将复制我的日志,并尝试在本文中获取group3名称
该项目:
if(第3组){
var checkGroup3=函数(recentName){
对于(var j=0;j
原始数据:
var data = {
'name': 'Big Data',
'children': [
{
'name': 'Apple',
'gruppe_1': 'Fruits',
'gruppe_2': 'Red Fruits',
'gruppe_3': 'Tree Fruits',
'gruppe_4': 'Winter Favourite Fruits',
'gruppe_5': 'Candy Fruits'
},
{
'name': 'Pomegranate',
'gruppe_1': 'Fruits',
'gruppe_2': 'Red Fruits',
'gruppe_3': 'Tree Fruits',
'gruppe_4': 'Winter Favourite Fruits',
'gruppe_5': 'Candy Fruits'
},
{
'name': 'Pear',
'gruppe_1': 'Fruits',
'gruppe_2': 'Green Fruits',
'gruppe_3': 'Medium Tree Fruits'
},
{
'name': 'Strawberry',
'gruppe_1': 'Nuts',
'gruppe_2': 'Red Nuts',
'gruppe_3': 'Awkward Nuts'
},
{
'name': 'Hazelnuts',
'gruppe_1': 'Nuts',
'gruppe_2': 'Brown Nuts',
'gruppe_3': 'Normal Nuts'
},
{
'name': 'Cucumber',
'gruppe_1': 'Vegetable',
'gruppe_2': 'Green Vegetable',
'gruppe_3': 'Long Vegetable'
},
{
'name': 'Maracuya'
},
{
'name': 'Green Kiwi',
'gruppe_1': 'Fruits',
'gruppe_2': 'Green Fruits'
},
{
'name': 'Cherry',
'gruppe_1': 'Fruits',
'gruppe_2': 'Red Fruits',
'gruppe_3': 'Tree Fruits'
},
]
}
我试图得到的结构:
{
"name":"Big Data",
"children":[
{
"name":"Fruits",
"children":[
"Maracuya",
{
"name":"Red Fruits",
"parent":"Fruits",
"children":[
{
"name":"Tree Fruits",
"children":[
"Cherry",
{
"name":"Winter Favourite Fruits",
"children":[
{
"name":"Candy Fruits",
"children":[
"Apple",
"Pomegranate"
]
}
]
}
]
}
]
},
{
"name":"Green Fruits",
"children":[
"Green Kiwi",
{
"name":"Medium Tree Fruits",
"children":[
"Pear"
]
}
]
}
]
},
{
"name":"Vegetable",
"children":[
{
"name":"Green Vegetable",
"children":[
{
"name":"Long Vegetable",
"children":[
"Cucumber"
]
}
]
}
]
},
{
"name":"Nuts",
"children":[
{
"name":"Red Nuts",
"children":[
{
"name":"Awkward Nuts",
"children":[
"Strawberry"
]
}
]
},
{
"name":"Brown Nuts",
"children":[
{
"name":"Normal Nuts",
"children":[
"Hazelnuts"
]
}
]
}
]
}
]
}
我是如何尝试重组数据的:
var materialData={
“名称”:“大数据”,
“儿童”:[]
};
var numberOfElements=data.children.length;
对于(var i=0;i
一种方法
您可以采用迭代方法,迭代嵌套组的键并搜索组。如果未找到,则生成一个包含子对象的新组,并继续操作,直到所有组都位于对象中
最后,在可能的后续对象前面,将name属性指定给一个新组
var data={name:“大数据”,子项:[{name:“苹果”,gruppe_1:“水果”,gruppe_2:“红色水果”,gruppe_3:“树果实”,gruppe_4:“冬季喜爱的水果”,gruppe_5:“糖果水果”},{name:“石榴”,gruppe_1:“水果”,gruppe_2:“红色水果”,gruppe_3:“树果实”,gruppe_4:“冬季喜爱的水果”,gruppe_5:“糖果水果”},{名称:“梨”,gruppe_1:“水果”,gruppe_2:“绿色水果”,gruppe_3:“中等树果实”},{名称:“草莓”,gruppe_1:“坚果”,gruppe_2:“红色坚果”,gruppe_3:“笨拙的坚果”},{名称:“榛子”,gruppe_1:“坚果”,gruppe_2:“棕色坚果”