问题描述:有一个json数组,数据有层级关系,现想获得某个节点下或一组节点的所有子级。
解决办法:递归获得子节点(如果你有更好的办法欢迎提供)
var arr2 = [
{
"id": "1",
"title": "1",
"pid": "-1"
},
{
"id": "2",
"title": "2",
"pid": "-1"
},
{
"id": "3",
"title": "3",
"pid": "1"
},
{
"id": "4",
"title": "4",
"pid": "2"
},
{
"id": "5",
"title": "5",
"pid": "4"
},
{
"id": "6",
"title": "6",
"pid": "5"
}
]
$(function () {
console.log(arr2);
var query = ["1", "2"];
var newArr = [];
debugger
function finalQuery() {
console.log("1")
for (var r = 0; r < query.length; r++) {
debugger
function fun(id) {
debugger
for (var i = 0; i < arr2.length; i++) {
if (arr2[i].pid == id) {
newArr.push(arr2[i]);
fun(arr2[i].id);
} else {
continue;
}
}
}
fun(query[r]);
}
}
finalQuery();
//某些情况下可能会导致数据的重复,比如query数组中1和2本身就存在上下级关系
//若想去重,可以用var newArr=Array.from(new Set(arr));来获得去重后的数组
console.log(newArr);//获得了id为1和2的全部子节点
})
如果你发现什么错误,欢迎提出来,对于递归真的是不太懂~

本文介绍了如何在遇到具有层级关系的JSON数据时,通过递归方法获取特定节点及其所有子节点。内容包括问题描述、解决办法,并诚邀读者分享更好的解决方案或指出可能存在的错误。
2552

被折叠的 条评论
为什么被折叠?



