title: 递归查找
date: 2019-08-06 17:50:39
tags: “JavaScript”
很多时候,我们通过网络请求返回后台数据之后,需要在前端页面中显示,通常有一些嵌套多个数组的数据,我们称之为‘树形结构’数据,
而我们通常碰到搜索题目id查找对应的数据,又或者我们打开了一个题目,需要点击下一题的时候,我们往往需要通过id去获取题目这个对象;
下面array其实就是多个题目对象组成,我们直接上代码;
var array = [
{
id: 1,
title:"a",
children:[{
id:2,
children:[]
}]
},
{
id:3,
title:"b",
children:[]
},
{
id:4,
title:"c",
children:[
{
id:5,
title:"c1",
children:[
{
id:6,
title:"c2",
children:[]
},
{
id:7,
title:"c3",
children:[]
}
]
}
]
}
];
方法一:
var returnedItem;
var find = function(arr, id){
arr.forEach((item) => {
if(item.id==id)
{
returnedItem = item;
return item;
}
else if(item.children.length > 0)
{
find(item.children, id);
}
})
}
var item = find(array, 7);
console.log(returnedItem);
方法二:
var returnedItem;
var find = function(arr, id){
for (var a = 0; a < arr.length; a++) {
if(arr[a].id == id)
{
returnedItem = arr[a];
return item;
}
else if(arr[a].children != undefined && arr[a].children.length > 0)
{
find(arr[a].children, id);
}else {
}
}
}
var item = find(array, 7);
console.log(returnedItem);
其中7为你输入的id,得到的是id为7的对象;returnedItem.id和returnedItem.title就是我们想要的数据;