所以我有这个代表层次结构的对象。穿越它的最佳方式是什么?
例如,查找每个级别的朋友数量,添加特定深度的朋友。
{
"name": "John",
"Friends": [{
"name": "Emily",
"Friends": [{
"name": "Sandra",
"Friends": []
},
{
"name": "Michael",
"Friends": []
}
]
},
{
"name": "Sara",
"Friends": [{
"name": "James",
"Friends": []
},
{
"name": "Yara ",
"Friends": []
}
]
}
]
}
这个函数应该足够了,这将使我们能够广泛地迭代,如果我们想要一些其他的条件语句,我们可以添加/删除对象 - :
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]);
}
}
}
我建议你使用lodash.Its如此有用。你可以使用计数,你可以找到每个级别的朋友的计数。我使用它喜欢递归,因为朋友级别可以更多。
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