草庐IT

recursion

全部标签

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 - 使用迭代样式在 JavaScript 中克隆对象

是否可以重写以下JavaScript递归函数以使其更快?functionclone_recursive(object){varresult={};for(varkeyinobject){varvalue=object[key];if(typeofvalue==='object'){result[key]=clone_recursive(value);}else{result[key]=value;}}returnresult;}我以迭代的方式重写了它,但它没有获得任何性能,事实上速度下降了≈20%。functionclone_iterative(object){varresult={}

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 - 如何检查物体的深度?

我正在开发一个具有可变深度的权限系统;根据页面的复杂程度,可能会有更多或更少的级别。我搜索了StackOverflow以查找之前是否有人问过这个问题,但找不到。如果我有这个对象:{foo:{bar:{baz:'baa'}}}我需要它返回3,它有3个级别。对于这个对象:{abc:'xyz'}它必须是1。这是我目前所拥有的:utils.depthOf=function(object,level){//Returnsanintofthedeepestlevelofanobjectlevel=level||1;varkey;for(keyinobject){if(!object.hasOwnP

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()

javascript - 递归函数的返回值为 'undefined'

每当我执行此代码段时,返回前的console.log都会返回值23的20倍的数组。然而console.log(Check(users,0,20));仅返回“未定义”。我做错了什么?varusers=[23,23,23,23,23,23,23,23,23,23];console.log(Check(users,0,20));functionCheck(ids,counter,limit){ids.push(23);//Recursionif(counter+1 最佳答案 您忘记从进入递归的点返回结果。varusers=[23,23,2

javascript - 递归地 trim 对象键和值中的空格

如何递归地trimJavaScript对象中键和值中的空格?我遇到了一个问题,我试图“清理”用户提供的JSON字符串并将其发送到我的其他代码中以进行进一步处理。假设我们有一个用户提供的JSON字符串,其属性键和值的类型为“字符串”。但是,在这种情况下,问题在于键和值并不像预期的那样干净。说一个{“key_with_leading_n_trailing_spaces”:“my_value_with_leading_spaces”}。在这种情况下,它很容易导致您编写出色的JavaScript程序尝试使用此类数据(或者我们应该称之为脏数据?)的问题,因为当您的代码试图从该JSON对象中获取值

javascript - 我无法理解 Y-Combinator,所以我尝试实现它并最终得到了一些更短的东西,但它起作用了。这怎么可能?

我无法理解Y组合器,因此我尝试实现一个无需native实现即可启用递归的函数。经过一番思考,我得出了这样的结论:Y=λx.(λv.(xx)v)比实际的短:Y=λf.(λx.f(xx))(λx.f(xx))而且,令我惊讶的是,它奏效了。一些例子://JavaScriptY=function(x){returnfunction(v){returnx(x,v);};};sum=Y(function(f,n){returnn==0?0:n+f(f,n-1);});sum(4);;Scheme(defineY(lambda(x)(lambda(v)(xxv))))(definesum(Y(lam

Javascript 回调函数和递归

这是一个脑筋急转弯的问题,因为代码按原样运行得非常好,它只是稍微刺激了我的审美。我正在转向StackOverflow,因为我自己的大脑现在正在让我失望。下面是一段代码,它使用GoogleMapsJSAPI查找地址并在map上放置标记。但是,有时初始查找会失败,所以我想用不同的地址重复该过程。geocoder.getLatLng(item.mapstring,function(point){if(!point){geocoder.getLatLng(item.backup_mapstring,function(point){if(!point)return;map.setCenter(p

javascript - Spread元素神奇地将函数变成 'not functions'

假设我有这个简单的JavaScript函数:functionreturnArray(){return[1,2,3];}进一步假设我然后说vartest=[0,...returnArray()];您希望test等于[0,1,2,3],您是对的。我试过了,当然有效。现在我有这个练习,我想构建一个名为double的函数,它将一个数组作为参数并返回另一个包含所有原始数组值的两倍的数组。所以如果我调用double([1,2,3])我应该得到[2,4,6]。练习的限制是我必须使用仅数组解构、递归和剩余/扩展运算符来构建我的函数。不允许数组助手。所以我想到了这个:functiondouble(arr