两种方法,废话不多说,直接上代码。
第一种,函数里套函数用法
var data = [ { text: 'Item1', iconCls: 'icon-more', id:1, children: [ { text: 'option1', url: '/datalist.html?id=1', id: 2 }, { text: 'option2', url: '/datalist.html?id=2', id: 3 }, { text: 'option3', url: '/datalist.html?id=3', id: 4 }, ] }, { text: 'Item2', iconCls: 'icon-more', id:5, children: [ { text: 'option4', url: '/datalist.html?id=4', id: 6 }, { text: 'option5', url: '/datalist.html?id=5', id: 7 }, { text: 'option6', url: '/datalist.html?id=6', id: 8 }, ] }, { text: 'Item3', iconCls: 'icon-more', id:9, children: [ { text: 'option7', url: '/datalist.html?id=7', id: 10 }, { text: 'option8', url: '/datalist.html?id=8', id: 11 }, { text: 'option9', url: '/datalist.html?id=9', id: 12 }, ] }, { text: 'Item4', iconCls: 'icon-more', id:13, children: [ { text: 'option10', url: '/datalist.html?id=10', id: 13 }, { text: 'option11', url: '/datalist.html?id=11', id: 14 }, { text: 'option12', url: '/datalist.html?id=12', id: 15 }, ] }, { text: 'Item5', iconCls: 'icon-more', id:16, children: [ { text: 'option13', url: '/datalist.html?id=13', id: 17 }, { text: 'option14', url: '/datalist.html?id=14', id: 18 }, { text: 'option15', url: '/datalist.html?id=15', id: 19 }, ] }, { text: 'Item6', iconCls: 'icon-more', id:20, children: [ { text: 'option16', url: '/datalist.html?id=16', id: 21 }, { text: 'option17', url: '/datalist.html?id=17', id: 22 }, { text: 'option18', url: '/datalist.html?id=18', id: 23 }, { text: 'option19', url: '/datalist.html?id=19', id: 24 }, { text: 'option20', url: '/datalist.html?id=20', id: 25 }, { text: 'option21', url: '/datalist.html?id=21', id: 26 }, ] }, ]; var hash = '/datalist.html?id=21'; var current = getTarget(hash,data) console.log(current) function getTarget(target,data){ var obj = {}; function each(target,data){ for(var i = 0; i < data.length; i++){ if(data[i].url == target){ obj = data[i] }else if(('children' in data[i]) && data[i].children.length > 0){ each(target,data[i].children) } } } each(target,data) return obj; }
第二种方法,使用callback
var data = [
{
text: 'Item1',
iconCls: 'icon-more',
id:1,
children: [
{
text: 'option1',
url: '/datalist.html?id=1',
id: 2
},
{
text: 'option2',
url: '/datalist.html?id=2',
id: 3
},
{
text: 'option3',
url: '/datalist.html?id=3',
id: 4
},
]
},
{
text: 'Item2',
iconCls: 'icon-more',
id:5,
children: [
{
text: 'option4',
url: '/datalist.html?id=4',
id: 6
},
{
text: 'option5',
url: '/datalist.html?id=5',
id: 7
},
{
text: 'option6',
url: '/datalist.html?id=6',
id: 8
},
]
},
{
text: 'Item3',
iconCls: 'icon-more',
id:9,
children: [
{
text: 'option7',
url: '/datalist.html?id=7',
id: 10
},
{
text: 'option8',
url: '/datalist.html?id=8',
id: 11
},
{
text: 'option9',
url: '/datalist.html?id=9',
id: 12
},
]
},
{
text: 'Item4',
iconCls: 'icon-more',
id:13,
children: [
{
text: 'option10',
url: '/datalist.html?id=10',
id: 13
},
{
text: 'option11',
url: '/datalist.html?id=11',
id: 14
},
{
text: 'option12',
url: '/datalist.html?id=12',
id: 15
},
]
},
{
text: 'Item5',
iconCls: 'icon-more',
id:16,
children: [
{
text: 'option13',
url: '/datalist.html?id=13',
id: 17
},
{
text: 'option14',
url: '/datalist.html?id=14',
id: 18
},
{
text: 'option15',
url: '/datalist.html?id=15',
id: 19
},
]
},
{
text: 'Item6',
iconCls: 'icon-more',
id:20,
children: [
{
text: 'option16',
url: '/datalist.html?id=16',
id: 21
},
{
text: 'option17',
url: '/datalist.html?id=17',
id: 22
},
{
text: 'option18',
url: '/datalist.html?id=18',
id: 23
},
{
text: 'option19',
url: '/datalist.html?id=19',
id: 24
},
{
text: 'option20',
url: '/datalist.html?id=20',
id: 25
},
{
text: 'option21',
url: '/datalist.html?id=21',
id: 26
},
]
},
];
var hash = '/datalist.html?id=21';
var target = {};
getTarget(hash,data,(res)=>{
target = res
})
console.log(target)
function getTarget(target,data,callback){
for(var i = 0; i < data.length;i++){
if(data[i].url == target){
return callback(data[i])
}else if(('children' in data[i]) && data[i].children.length > 0){
getTarget(target,data[i].children,callback)
}
}
}
应该能够看懂吧