Heim > Fragen und Antworten > Hauptteil
Array
(
[1] => Array
(
[id] => 1
[access_id] => 1
[name] => 统计报表
[module] => manage
[parent_id] => 0
[icon] => fa-dashboard
[type] => menu
[sort] => 0
[status] => 1
[access_name] => 统计报表
[controller] => dashboard
[action] => index
)
[2] => Array
(
[id] => 2
[access_id] =>
[name] => 个人中心
[module] => manage
[parent_id] => 0
[icon] => fa-male
[type] => menu
[sort] => 1
[status] => 1
[access_name] =>
[controller] =>
[action] =>
[_child] => Array
(
[3] => Array
(
[id] => 3
[access_id] =>
[name] => 修改个人信息
[module] => manage
[parent_id] => 2
[icon] =>
[type] => menu
[sort] => 0
[status] => 1
[access_name] =>
[controller] =>
[action] =>
)
)
)
[4] => Array
(
[id] => 4
[access_id] =>
[name] => 广告管理
[module] => manage
[parent_id] => 0
[icon] => fa-th
[type] => menu
[sort] => 2
[status] => 1
[access_name] =>
[controller] =>
[action] =>
[_child] => Array
(
[5] => Array
(
[id] => 5
[access_id] =>
[name] => 广告位管理
[module] => manage
[parent_id] => 4
[icon] =>
[type] => menu
[sort] => 0
[status] => 1
[access_name] =>
[controller] =>
[action] =>
[_child] => Array
(
[8] => Array
(
[id] => 8
[access_id] =>
[name] => 添加广告位
[module] => manage
[parent_id] => 5
[icon] =>
[type] => menu
[sort] => 1
[status] => 1
[access_name] =>
[controller] =>
[action] =>
)
[7] => Array
(
[id] => 7
[access_id] =>
[name] => 广告位列表
[module] => manage
[parent_id] => 5
[icon] =>
[type] => menu
[sort] => 2
[status] => 1
[access_name] =>
[controller] =>
[action] =>
)
)
)
[6] => Array
(
[id] => 6
[access_id] =>
[name] => 广告内容管理
[module] => manage
[parent_id] => 4
[icon] =>
[type] => menu
[sort] => 1
[status] => 1
[access_name] =>
[controller] =>
[action] =>
[_child] => Array
(
[9] => Array
(
[id] => 9
[access_id] =>
[name] => 广告列表
[module] => manage
[parent_id] => 6
[icon] =>
[type] => menu
[sort] => 0
[status] => 1
[access_name] =>
[controller] =>
[action] =>
)
[10] => Array
(
[id] => 10
[access_id] =>
[name] => 添加广告
[module] => manage
[parent_id] => 6
[icon] =>
[type] => menu
[sort] => 1
[status] => 1
[access_name] =>
[controller] =>
[action] =>
)
)
)
)
)
)
上面是个数组,包含的是菜单的信息,可能有很多维,现在有一个问题是如果一个菜单的id位8,也就是索引为 $arr[4]['_child'][5]['_child'][8]
这个菜单,我如何通过写一个函数,返回一个数组,该数组包含了所有的索引值,比如id为8的这个菜单,返回 [4,5,8]
。
过去多啦不再A梦2017-05-16 13:00:11
_child数组里面每个数组加一个父菜单id就可以了,然后通过索引一层一层读,否则你得for 循环一个数组一个数组的判断。效果太差
世界只因有你2017-05-16 13:00:11
function EachTree(json, id) {
var path = [];
for (var i = 0; i < json.length; i++) {
var arr = json[i], _id = arr["id"];
path.push(_id);
if (_id == id) {
return path;
}
if (arr["_child"] && arguments.callee(arr["_child"], id)) {
return path;
}
}
}
console.log(EachTree(json, 8));