所以我有一个代表层次结构的对象。什么 是最好的方法吗?
例如,找到每个级别的朋友数量,并在特定深度添加朋友。
{
"name": "John",
"Friends": [{
"name": "Emily",
"Friends": [{
"name": "Sandra",
"Friends": []
},
{
"name": "Michael",
"Friends": []
}
]
},
{
"name": "Sara",
"Friends": [{
"name": "James",
"Friends": []
},
{
"name": "Yara ",
"Friends": []
}
]
}
]
}
答案 0 :(得分:3)
该函数就足够了,这将使我们能够迭代广度,并且如果需要其他条件语句,我们可以添加/删除对象-:
function traverseObjectBreadthWise (obj) {
for (var key in obj) {
if (typeof obj[key] == "array" || typeof obj[key] == "object") {
traverseObjectBreadthWise(obj[key]);
console.log(key);
} else {
console.log(key, "=", obj[key]);
}
}
}
答案 1 :(得分:0)
我建议您使用lodash。它非常有用。您可以使用count by,并且可以找到每个级别的朋友的计数。我喜欢它的递归方式,因为Friends级别可以更多。
recusersiveFunc(arr){
if(Object.keys(arr).includes("Friends")){
console.log(_.countBy(arr.Friends,"name"));
arr.Friends.forEach(x => {
this.recusersiveFunc(x);
});
}
}
this.recusersiveFunc(data);//data is your JSON object