草庐IT

非递归

全部标签

循环变量和递归的javascript

我有一个问题,我在for循环中进行递归:functionfunc(node){for(vari=0;i显然,因为JavaScript没有block作用域,所以每次调用函数时都会修改同一个i变量。解决此问题的最佳方法是什么?假设使用常规EcmaScript3,我不能使用JavaScript1.7“let”。我知道之前有人问过这个问题,但其他问题似乎没有显示递归,它们显示了一个可以使用闭包的函数调用。 最佳答案 缓存数组的长度,因此您将拥有以下内容:functionrecurse(node){for(vari=0,count=node.

javascript - 按属性名称递归搜索对象中的值

我正在构建一个实用程序函数,该函数应搜索属性名称并在找到后返回其值。它应该递归地执行此操作://Functionutil.findVal=(object,propName)=>{for(letkeyinobject){if(key===propName){console.log(propName)console.log(object[key])returnobject[key]}else{util.findVal(object[key],propName)}}}//Inputobject:{photo:{progress:20}}//Usageutil.findVal(object,'

javascript - JQuery 模板 - 太多的递归

我正在使用jquery模板生成树结构以显示部分和项目的TreeView。数据结构如下所示,其中每个部分都有项目和部分,每个项目可以有更多部分:sectionitemsitemsectionsitemsectionssectionssectionsectionsitems...andsoon然后我的模板递归地互相调用:${text}{{eachsections}}{{tmpl($value)"sectionTmpl"}}{{/each}}${text}{{eachitems}}{{tmpl($value)"itemTmpl"}}{{/each}}{{eachsections}}{{tmp

javascript - 如何在返回单个对象时递归使用 Array.prototype.find()?

我试图解决的更大问题是,鉴于此数据:vardata=[{id:1},{id:2},{id:3},{id:4,children:[{id:6},{id:7,children:[{id:8},{id:9}]}]},{id:5}]我想创建一个返回{id:id}的函数findById(data,id)。例如,findById(data,8)应该返回{id:8},而findById(data,4)应该返回{id:4,children:[...]}.为了实现这一点,我递归地使用了Array.prototype.find,但是当return将对象混合在一起时遇到了麻烦。我的实现返回特定对象的路径。例

javascript - 递归地在ng-repeat中迭代时如何在ng-include中获取父元素

我制作了一个递归的ng-repeat元素,试图操纵事物变成了一场噩梦,因为我没有引用我正在迭代的父元素。ng-repeat看起来像这样:ng-repeat="(key,value)invalue"记住它是递归的,所以value中的每个值都会成为新值,所以我不能只使用ng-repeat中的“in”值。我想做这样的事情,比如检查父级是否是一个数组,但是$parent是一些奇怪的东西,而不是当前迭代值的父元素。我想做的事情的一些例子是:ng-show="isArray(parent)"ng-click="delete(parent,$index)"(作为我正在做的工作的一个例子,我不得不向我

Javascript递归数组展平

我正在练习并尝试编写一个递归数组展平函数。代码在这里:functionflatten(){varflat=[];for(vari=0;i问题是,如果我向那里传递一个数组或嵌套数组,我会收到“超出最大调用堆栈大小”错误。我做错了什么? 最佳答案 问题是你如何传递数组的处理,如果值是一个数组那么你一直调用它导致无限循环functionflatten(){varflat=[];for(vari=0;i演示:Fiddle这是一个更现代的版本:functionflatten(items){constflat=[];items.forEach(

javascript - 使用递归 promise 阻止内存泄漏

如何使用Qlibrary创建JavaScriptPromise的递归链?以下代码无法在Chrome中完成://Don'tkeeptrackofapromisesstackfordebugging//ReducesmemoryusagewhenrecursingpromisesQ.longStackJumpLimit=0;functiondo_stuff(count){if(count==1000000){return;}if(count%10000==0){console.log(count);}returnQ.delay(1).then(function(){returndo_stu

javascript - 可以递归定义 React prop 类型吗?

假设我们正在定义一个将显示树的React类。React.createClass({propTypes:{tree:treeType},render:function(){//...}});这是treeType的定义,它显然不起作用,但希望能说明我要表达的意思。vartreeType=React.PropTypes.shape({value:React.PropTypes.string,children:React.PropTypes.arrayOf(treeType)})有没有办法让类型懒惰地引用自己,这样就可以工作了? 最佳答案

javascript - 递归 'setTimeout' 函数调用最终会杀死 JS 引擎吗?

假设我有一些数据需要大约每10秒从服务器获取一次。我会有一个通过AJAX获取数据的函数,然后调用setTimeout再次调用这个函数:functionGetData(){$.ajax({url:"data.json",dataType:"json",success:function(data){//dosomthingwiththedatasetTimeout(GetData,10000);},error:function(){setTimeout(GetData,10000);}});}如果有人让网页整天打开,它可能会收到数千次递归函数调用。我不想使用setInterval,因为它没

javascript - AngularJS, promise 递归函数

我正在尝试将AngularJSpromise/then与递归函数一起使用。但是then-function没有被调用(错误、成功、通知回调都没有被调用)。这是我的代码:递归函数loadSection2=function(){varapiURL="http://..."vardeferred=$q.defer();$http({method:"GET",url:apiURL}).success(function(result,status,headers,config){console.log(result);loadCount++;if(loadCount然后loadSection2()