下面的 JSON 数据包含 EmployeeNumber、TBD 和 Number,我只需要从 JSON 中形成 TBD 计数并附加到父级
var myJson={
"Name": "Sam",
"EmployeeNumber": "002",
"IsManager":"True",
"children": [{
"Name": "Ravi",
"EmployeeNumber": "0008",
"IsManager":"True",
"children": [{
"Name": "Krishna",
"EmployeeNumber": "TBD"
}, {
"Name": "diwakar",
"EmployeeNumber": "007"
},
{
"Name": "Dillep",
"EmployeeNumber": "009"
},
{
"Name": "David",
"EmployeeNumber": "009"
},
{
"Name": "Nicholes",
"EmployeeNumber": "TBD"
},
{
"Name": "Hari",
"EmployeeNumber": "TBD"
}
]
},
{
"Name": "Rahul",
"EmployeeNumber": "TBD"
},
{
"Name": "Kiran",
"EmployeeNumber": "TBD"
}, {
"Name": "Kumar",
"EmployeeNumber": "TBD"
},
{
"Name": "AJAy",
"EmployeeNumber": "TBD"
}
]
}
从上面的 JSON 中,我希望获得 TBD 的总计数,并将计数添加到父名称:Sam=4TBD/0FTE 并将子项 TBD 计数添加到 Ravi =3TBD/3FTE 并且如果 IS Manager 为 True
预期输出:
var myJson={
"Name": "Sam",
"EmployeeNumber": "002",
"IsManager": "Ture",
"Count": "4TBD/0FTE",
"children": [{
"Name": "Ravi",
"EmployeeNumber": "TBD",
"IsManager": "Ture",
"Count": "3TBD/3FTE",
"children": [{
"Name": "Krishna",
"EmployeeNumber": "TBD"
}, {
"Name": "diwakar",
"EmployeeNumber": "007"
},
{
"Name": "Dillep",
"EmployeeNumber": "009"
},
{
"Name": "David",
"EmployeeNumber": "009"
},
{
"Name": "Nicholes",
"EmployeeNumber": "TBD"
},
{
"Name": "Hari",
"EmployeeNumber": "TBD"
}
]
},
{
"Name": "Rahul",
"EmployeeNumber": "TBD"
},
{
"Name": "Kiran",
"EmployeeNumber": "TBD"
}, {
"Name": "Kumar",
"EmployeeNumber": "TBD"
},
{
"Name": "AJAy",
"EmployeeNumber": "TBD"
}
]
}
我尝试过以下一个
var annCtr=[];
var annFtr=[];
arr.forEach(function(myJSON) {
var ctr=[];
var ftr=[];
if (myJSON.EmployeeNumber == "TBD") {
annCtr.push(myJSON.EmployeeNumber);
ctr.push(myJSON.EmployeeNumber);
}
else
{
annFtr.push(myJSON.EmployeeNumber);
ftr.push(myJSON.EmployeeNumber);
//console.log("FTR :"+myJSON.EmployeeNumber+" Name "+myJSON.Name);
}
//console.log("Length CTRCT for each loop: "+ctr.length);
//console.log("Length FTE for each loop: "+ftr.length);
})
function children(myJSON) {
return myJSON.children;
console.log(d.children);
}
console.log("Total Length FTE for : "+annFtr.length);
console.log("Total Length CTRCT for: "+annCtr.length);
console.log('//////////////////////////////////////////');
提前感谢您的所有帮助
最佳答案
希望下面的代码片段对您有所帮助。
var myJson={
"Name": "Sam",
"EmployeeNumber": "002",
"IsManager":"True",
"children": [{
"Name": "Ravi",
"EmployeeNumber": "0008",
"IsManager":"True",
"children": [{
"Name": "Krishna",
"EmployeeNumber": "TBD"
}, {
"Name": "diwakar",
"EmployeeNumber": "007"
},
{
"Name": "Dillep",
"EmployeeNumber": "009"
},
{
"Name": "David",
"EmployeeNumber": "009"
},
{
"Name": "Nicholes",
"EmployeeNumber": "TBD"
},
{
"Name": "Hari",
"EmployeeNumber": "TBD"
}
]
},
{
"Name": "Rahul",
"EmployeeNumber": "TBD"
},
{
"Name": "Kiran",
"EmployeeNumber": "TBD"
}, {
"Name": "Kumar",
"EmployeeNumber": "TBD"
},
{
"Name": "AJAy",
"EmployeeNumber": "TBD"
}
]
}
function getReporteeCount(employee) {
employee.count = employee.children.reduce( (result,child) => {
if(child.IsManager)
getReporteeCount(child);
if (child.EmployeeNumber === 'TBD')
result.TBDCount = result.TBDCount + 1;
else
result.FTECount = result.FTECount + 1;
return result}, {FTECount:0 , TBDCount:0})
}
getReporteeCount(myJson)
console.log(myJson)
关于javascript - JavaScript/Nodejs 中 Json 数据中父级下的 TBD 总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52262050/