javascript - 请教一个js对json遍历的问题
本文介绍了javascript - 请教一个js对json遍历的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
比如说 我想找得id为4,就应该返回 [1,3,4]
想找得id 为9 该返回 [1,3,9]
想找得id为7 改返回 [6,7]
不知道我说明白没有。谢谢解答啊
解决方案
很多人都在抱怨你没有把代码贴出来,能回答问题的人可都是真心的!
简化版实验原始数据(也供其他人可以验证自己的方案)
var nodes = [
{
"id": 1,
"children": [
{
"id": 3,
"children": [
{"id": 4},
{"id": 9}
]
},
{
"id": 10
},
]
},
{
"id": 2
},
{
"id": 6,
"children" : [
{ "id": 5},
{ "id": 7},
{ "id": 8}
]
}
];
JS查找输出结果
//递归实现
//@leafId 为你要查找的id,
//@nodes 为原始Json数据
//@path 供递归使用,不要赋值
function findPathByLeafId(leafId, nodes, path) {
if(path === undefined) {
path = [];
}
for(var i = 0; i < nodes.length; i++) {
var tmpPath = path.concat();
tmpPath.push(nodes[i].id);
if(leafId == nodes[i].id) {
return tmpPath;
}
if(nodes[i].children) {
var findResult = findPathByLeafId(leafId, nodes[i].children, tmpPath);
if(findResult) {
return findResult;
}
}
}
}
//用法
console.log(findPathByLeafId(4, nodes)); //输出 [1,3,4]
console.log(findPathByLeafId(9, nodes)); //输出 [1,3,9]
console.log(findPathByLeafId(7, nodes)); //输出 [6,7]
这篇关于javascript - 请教一个js对json遍历的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文