Javascript 重新排列JSON数据以向嵌套对象添加id

Javascript 重新排列JSON数据以向嵌套对象添加id,javascript,json,Javascript,Json,我正在尝试重新排列传入的JSON对象,以便在React组件中使用 我正在接收的JSON对象是jsonData&这就是我当前代码的样子: const jsonData={ “乔纳斯”:{ “职位”:“首席技术官”, “雇员”:[{ “苏菲”:{ “职位”:“工程副总裁”, “雇员”:[{ “尼克”:{ “职位”:“团队领导”, “雇员”:[{ “皮特”:{ “职位”:“后端工程师”, “雇员”:[] } }, { “芭芭拉”:{ “职位”:“前沿工程师”, “雇员”:[] } } ] } },

我正在尝试重新排列传入的JSON对象,以便在React组件中使用

我正在接收的JSON对象是
jsonData
&这就是我当前代码的样子:

const jsonData={
“乔纳斯”:{
“职位”:“首席技术官”,
“雇员”:[{
“苏菲”:{
“职位”:“工程副总裁”,
“雇员”:[{
“尼克”:{
“职位”:“团队领导”,
“雇员”:[{
“皮特”:{
“职位”:“后端工程师”,
“雇员”:[]
}
},
{
“芭芭拉”:{
“职位”:“前沿工程师”,
“雇员”:[]
}
}
]
}
},
{
“梅丽莎”:{
“职位”:“产品经理”,
“雇员”:[]
}
}
]
}
}]
}
}
const userList=[jsonData]
const formatData=list=>
list.map(项=>{
请说出姓名、职位、员工
用于(让输入项){
名称=键
位置=项[键]。位置
员工=项目[key]。员工?项目[key]。员工:[]
}
返回{
名称
立场,,
员工:员工?格式数据(员工):员工
}
})

log(formatData(userList))
只需添加一个var
id
并在循环内递增即可

const jsonData={
“乔纳斯”:{
“职位”:“首席技术官”,
“雇员”:[{
“苏菲”:{
“职位”:“工程副总裁”,
“雇员”:[{
“尼克”:{
“职位”:“团队领导”,
“雇员”:[{
“皮特”:{
“职位”:“后端工程师”,
“雇员”:[]
}
},
{
“芭芭拉”:{
“职位”:“前沿工程师”,
“雇员”:[]
}
}
]
}
},
{
“梅丽莎”:{
“职位”:“产品经理”,
“雇员”:[]
}
}
]
}
}]
}
}
const userList=[jsonData]
变量id=-1;
const formatData=list=>
list.map(项=>{
请说出姓名、职位、员工
用于(让输入项){
名称=键
位置=项[键]。位置
员工=项目[key]。员工?项目[key]。员工:[]
}
id=id+1;
返回{
身份证件
名称
立场,,
员工:员工?格式数据(员工):员工
}
})
log(formatData(userList))
您可以在
id的计数器上使用闭包

函数转换(对象){
const fn=o=>(name=>Object.assign(
{id:id++,name},
o[姓名],
{employees:o[name].employees.map(fn)
}))(对象键(o)[0]);
var-id=0;
返回fn(对象);
}
var数据={Jonas:{职位:“首席技术官”,员工:[{Sophie:{职位:“工程副总裁”,员工:[{Nick:{职位:“团队领导”,员工:[{Pete:{职位:“后端工程师”,员工:[]},{Barbara:{职位:“前沿工程师”,员工:[]},{Melissa:{职位:“产品经理”,员工:[]}}}},
结果=转换(数据);
控制台日志(结果)

.as控制台包装{max height:100%!important;top:0;}
我认为这是一种更好的方法,如果添加更多,可以解决更多的nester employees数组

const jsonData={
“乔纳斯”:{
“职位”:“首席技术官”,
“雇员”:[{
“苏菲”:{
“职位”:“工程副总裁”,
“雇员”:[{
“尼克”:{
“职位”:“团队领导”,
“雇员”:[{
“皮特”:{
“职位”:“后端工程师”,
“雇员”:[]
}
},
{
“芭芭拉”:{
“职位”:“前沿工程师”,
“雇员”:[]
}
}
]
}
},
{
“梅丽莎”:{
“职位”:“产品经理”,
“雇员”:[]
}
}
]
}
}]
}
}
const userList=[jsonData]
const newFormat=list=>{
findChildAndAddId(列表,0,列表.长度)
返回列表
}
const findChildAndAddId=(项目、计数、父编号)=>{
if(项和数组.isArray(项)){
item.map((值、索引)=>{
findChildAndAddId(值、计数+索引、项长度)
})
}如有其他情况(项目){
Object.key(item.map)(key=>{
让值=项[键]
item.id=计数
item.name=key
if(值位置){
item.position=value.position
}
if(员工价值){
item.employees=value.employees
}
删除项[键]
if(项目员工){
findChildAndAddId(item.employees,count+parentNumber)
}
})
}
}
console.log(新格式(用户列表))