Javascript 添加';键';在递归树中数组中的每个对象之前
我有一个json,它有一个层次树结构,可能有n个嵌套。我需要将下面的输入json转换为输出json格式,我只添加了一个嵌套级别实时它可能有n个嵌套级别 输入JSON:Javascript 添加';键';在递归树中数组中的每个对象之前,javascript,arrays,json,Javascript,Arrays,Json,我有一个json,它有一个层次树结构,可能有n个嵌套。我需要将下面的输入json转换为输出json格式,我只添加了一个嵌套级别实时它可能有n个嵌套级别 输入JSON: [ { "name": "CompanyI", "expenses": 105000, "employees": 22, "contact": "Makenzie Higgs", "children": [ { "name": "Group bet", "expenses": 1000, "employ
[
{
"name": "CompanyI",
"expenses": 105000,
"employees": 22,
"contact": "Makenzie Higgs",
"children": [
{
"name": "Group bet",
"expenses": 1000,
"employees": 6,
"contact": "Camila Devonport"
},
{
"name": "Group gamma",
"expenses": 40000,
"employees": 4,
"contact": "Violet Curtis",
"children": [
{
"name": "Child 1",
"expense": 300,
"employees": 3,
"contact": "Child Level 1"
},
{
"name": "Child 2",
"expense": 400,
"employees": 55,
"contact": "Child Level 2"
},
{
"name": "Child 3",
"expense": 500,
"employees": 44,
"contact": "Child Level 3"
}
]
}
]
}
]
我已经尝试了下面的代码,但是它不起作用
代码:
输出JSON:
[
{
"data": {
"name": "Company I",
"expenses": 105000,
"employees": 22,
"contact": "Makenzie Higgs"
},
"children": [
{
"data": {
"name": "Group beta",
"expenses": 10000,
"employees": 6,
"contact": "Camila Devonport"
}
},
{
"data": {
"name": "Group gamma",
"expenses": 40000,
"employees": 4,
"contact": "Violet Curtis"
},
"children": [
{
"data": {
"name": "Child 1",
"expense": 300,
"employees": 3,
"contact": "Child Level 1"
}
},
{
"data": {
"name": "Child 2",
"expense": 400,
"employees": 55,
"contact": "Child Level 2"
}
},
{
"data": {
"name": "Child 3",
"expense": 500,
"employees": 44,
"contact": "Child Level 3"
}
}
]
}
]
}
]
使用
forEach
循环
var obj=[
{
“名称”:“CompanyI”,
“费用”:105000,
“雇员”:22,
“接触”:“Makenzie Higgs”,
“儿童”:[
{
“名称”:“团体下注”,
“费用”:1000,
“雇员”:6,
“联系人”:“卡米拉·德文波特”
},
{
“名称”:“组伽马”,
“费用”:40000美元,
“雇员”:4,
“联系人”:“紫罗兰·柯蒂斯”
}
]
},
{
“名称”:“CompanyI”,
“费用”:105000,
“雇员”:22,
“接触”:“Makenzie Higgs”,
“儿童”:[
{
“名称”:“团体下注”,
“费用”:1000,
“雇员”:6,
“联系人”:“卡米拉·德文波特”
},
{
“名称”:“组伽马”,
“费用”:40000美元,
“雇员”:4,
“联系人”:“紫罗兰·柯蒂斯”
}
]
}
]
对象forEach(函数(e,i){
obj[i]={data:e}
obj[i].儿童=[];
obj[i].data.children.forEach(函数(x,y){
obj[i].children.push({data:x})
})
删除obj[i].data.children
})
console.log(obj)
您可以使用以下命令
基本上,我创建了两个函数,一个用于处理数组,另一个用于处理对象,它递归地调用自身并创建最终的对象
让数据数组=[
{
“名称”:“CompanyI”,
“费用”:105000,
“雇员”:22,
“接触”:“Makenzie Higgs”,
“儿童”:[
{
“名称”:“团体下注”,
“费用”:1000,
“雇员”:6,
“联系人”:“卡米拉·德文波特”
},
{
“名称”:“组伽马”,
“费用”:40000美元,
“雇员”:4,
“联系人”:“紫罗兰·柯蒂斯”
}
]
}
];
函数转换(x){
设obj={};
for(让attr在x中){
if(Array.isArray(x[attr])){
obj[attr]=convertArray(x[attr]);
}否则{
obj[attr]=x[attr];
}
}
返回obj;
}
函数转换数组(数组){
返回array.map(obj=>({data:convert(obj)}));
}
log(convertary(dataArray))代码>你的代码在哪里?不理解你的目标请更精确:钥匙呢?是否要设置一个反映层次结构的键,然后将对象展平?@PhilMaGeo我正在尝试使用生成一个树结构。我正在尝试将数据转换为上述定义的格式。数据正在转换,但第一级没有用大括号括起来。您可以验证我原始的ouptut JSONit是否有效,但仅适用于一个级别,因为它是层次结构,所以可能有“n”级别不适用于多个级别。在代码段中也适用于多个条目。不要只是给出初步的意见。提供您需要的解决方案的确切输入我已使用嵌套结构更新了上述输入和输出格式数据正在转换,但第一级未用括号括起来您可以验证我包含的原始ouptut JSON