【问题标题】:break for loop and return value , recursive function in angularJs中断循环和返回值,angularJs中的递归函数
【发布时间】:2015-05-13 15:02:18
【问题描述】:

我有一个递归函数来查找键并返回他的值,这是我的代码

$scope.findSelected = function (object, name){
            //var key = '';
            for (var i =0 ; i< object.length; i++){
               var children =object[i];
                var vName =children.Value.Name;
                if(vName=== name ){
                    var key=children.Value.Key;
                    break;


                }else {
                     key = $scope.findSelected(children.Children, name);
                }
            }
            return key;
        };

其中 vName === name 我必须返回密钥,但不能再次循环播放,我想我有任何狡猾的事情和函数返回身份不明

【问题讨论】:

  • 注意到return 只从函数的当前调用返回,而不是最上面的递归调用?而break 只中断当前循环,而不是递归中的所有循环?
  • 如果你在递归中,你还需要检查 else 分支中返回 $scope.findSelected 的内容,如果它返回未定义 - 还要中断循环
  • 如果有人可以将我的代码更改为功能正常工作
  • 最好是人家教你自己找问题,这样以后你自己的代码也能修好。
  • 所以如果有人可以解释一下

标签: javascript angularjs for-loop


【解决方案1】:

试试下面的。它在每次迭代结束时检查是否设置了键,如果设置了则返回它。这也将从较低级别的递归中“冒泡”。搜索顺序为深度优先。

$scope.findSelected = function (object, name){
    var key;

    for (var i = 0; i < object.length; i++){
         var children =object[i];
         var vName = children.Value.Name;

         if(vName === name ){
              key = children.Value.Key;
         } else {
              key = $scope.findSelected(children.Children, name);
         }

         if(key) return key;
    }
};

【讨论】:

    猜你喜欢
    • 2016-03-23
    • 2019-06-02
    • 2014-10-02
    • 1970-01-01
    • 2022-11-05
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2012-02-23
    相关资源
    最近更新 更多