程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了递归查找数组中的元素大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决递归查找数组中的元素?

开发过程中遇到递归查找数组中的元素的问题如何解决?下面主要结合日常开发的经验,给出你关于递归查找数组中的元素的解决方法建议,希望对你解决递归查找数组中的元素有所启发或帮助;

你应该更换

  getSubMenuItem(subMenuItems[i].items, ID);

  var found = getSubMenuItem(subMenuItems[i].items, ID);
  if (found) return found;

为了在找到元素时返回它。

并注意属性名称,JavaScript区分大小写,因此您还必须替换

  if (subMenuItems[i].ID == ID) {

  if (subMenuItems[i].ID == ID) {

示范

最终(清除)代码:

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;
        }
    }
};

解决方法

我有一个对象数组。数组中的每个对象都有一个ID和一个item属性,该属性是一个包含其他对象的数组。我需要能够通过id在数组中找到一个元素。这是到目前为止我所做的一个示例,但是递归函数总是返回未定义的。

多次递归调用函数后,如何退出函数并返回项目?

   $(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);
});

jsFiddle

大佬总结

以上是大佬教程为你收集整理的递归查找数组中的元素全部内容,希望文章能够帮你解决递归查找数组中的元素所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。