Mdb*_*Mdb 14 javascript algorithm
我有一个对象数组.数组中的每个对象都有一个id和一个item属性,它是一个包含其他对象的数组.我需要能够通过id在数组中找到一个元素.这是我到目前为止所做的一个示例,但递归函数总是返回undefined.
当我多次递归调用函数时,如何退出函数并返回项目?
$(function () {
var treeDataSource = [{
id: 1,
Name: "Test1",
items: [{
id: 2,
Name: "Test2",
items: [{
id: 3,
Name: "Test3"
}]
}]
}];
var getSubMenuItem = function (subMenuItems, id) {
if (subMenuItems && subMenuItems.length > 0) {
for (var i = 0; i < subMenuItems.length; i++) {
var item;
if (subMenuItems[i].Id == id) {
item = subMenuItems[i];
return item;
};
getSubMenuItem(subMenuItems[i].items, id);
};
};
};
var searchedItem = getSubMenuItem(treeDataSource, 3);
alert(searchedItem.id);
});
Run Code Online (Sandbox Code Playgroud)
Den*_*ret 27
你应该更换
getSubMenuItem(subMenuItems[i].items, id);
Run Code Online (Sandbox Code Playgroud)
同
var found = getSubMenuItem(subMenuItems[i].items, id);
if (found) return found;
Run Code Online (Sandbox Code Playgroud)
为了在找到元素时返回元素.
并且要小心属性的名称,javascript区分大小写,因此您还必须替换
if (subMenuItems[i].Id == id) {
Run Code Online (Sandbox Code Playgroud)
同
if (subMenuItems[i].id == id) {
Run Code Online (Sandbox Code Playgroud)
最终(清理)代码:
var getSubMenuItem = function (subMenuItems, id) {
if (subMenuItems) {
for (var i = 0; i < subMenuItems.length; i++) {
if (subMenuItems[i].id == id) {
return subMenuItems[i];
}
var found = getSubMenuItem(subMenuItems[i].items, id);
if (found) return found;
}
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14792 次 |
| 最近记录: |