草庐IT

非递归

全部标签

Javascript:如何通过异步递归树遍历控制流?

我需要在树上递归,以使用异步操作在特定节点上执行操作。如何控制流,以便在完成后可以访问节点?这是一个示例情况:data={name:"deven",children:[{name:"andrew"},{name:"donovan"},{name:"james",children:[{name:"donatello"},{name:"dan"}]},{name:"jimmy",children:[{name:"mike"},{name:"dank"}]}]};我有一个函数,目标是遍历树并大写以'd'开头的所有名称。之后,我想将树传递给另一个函数以做更多的工作(可能删除所有以“a”开头的名

javascript - 嵌套归约函数/递归/函数式编程/树遍历

我经常遇到这样的情况:我最终嵌套了很多reduce函数来深入研究一个对象。很难提取逻辑,因为在底部我需要访问沿途遍历的各种键。本质上,我正在寻找一种更好的方法来实现以下目标:import{curry}from'lodash/fp'import{fromJS}from'immutable'constreduce=curry((fn,acc,it)=>it.reduce(fn,acc))describe('reduceNested',()=>{constinput=fromJS({a1:{b1:{c1:{d1:{e1:'one',e2:'two',e3:'three'},d2:{e1:'o

javascript - 如何在 testcafe 脚本中添加递归函数检查 xhr 响应?

我正在尝试编写一个测试下载作品,它需要检查xhr响应是否具有READY状态。我在TestCafe中使用promises创建了一个客户端函数,但是在递归的情况下它失败了。我应该如何修改我的代码来处理这种情况?附言对于新手问题,我深表歉意,我刚刚开始我的自动化测试之旅。fixture`Downloadreportworks`test.requestHooks(logger)//connectedarequesthook,willwaitforloggerrequest('IshouldbeabletodownloadPDFreportfromheaderofthepage',asynct=

javascript - 简单的递归下降解析器?

我正在为一种编译成JS(如果相关的话)的模板语言编写解析器。我从几个简单的正则表达式开始,它们似乎可以工作,但正则表达式非常脆弱,所以我决定改写一个解析器。我首先编写了一个简单的解析器,它通过压入/弹出堆栈来记住状态,但事情一直在升级,直到我手上有了一个递归下降解析器。不久之后,我比较了我以前所有解析方法的性能。递归下降解析器到目前为止是最慢的。我被卡住了:是否值得为一些简单的事情使用递归下降解析器,或者我是否有理由走捷径?我很想走纯正则表达式路线,它非常快(几乎比RD解析器快3倍),但在某种程度上非常hacky和不可维护。我认为性能不是非常重要,因为编译后的模板被缓存了,但是递归下降

javascript - 递归范围函数不起作用

我正在尝试通过递归地执行范围函数来自学递归。我不明白为什么下面的代码不起作用?迭代版本:functionrangeList(num,num2){vararr=[];for(vari=num;i递归版本:functionrangeRecursive(num,num2){return(num2>num)?rangeRecursive(num2-1).concat(num2):[]}console.log(rangeList(1,7));//returns[1,2,3,4,5,6]console.log(rangeRecursive(1,7));//returns[7]

javascript - ng-repeat 是否支持自身递归?

假设我有这样一个json:{“数据”:{“数据”:{“数据”:{“设置”:“1”}}}}我想使用ng-repeat循环遍历这个json,但是我想动态循环它,我不知道我会有多少数据对象,有时可能是3,有时可能是5,6,7等我如何使用ng-repeat遍历它,而不必像有数据对象那样多次编写ng-repeat。在javascript中我会这样写:函数循环(数据){如果(数据。数据){循环(数据。数据)}} 最佳答案 使用你将要使用的相同函数并从ng-repeat中调用它{{getValue(v)}}Controller中的函数如下:$sc

javascript - 如何在 javascript 中编写递归平面 map ?

我有一个嵌套路由的对象。任何路线可以包含路线列表childRoutes。我想获取包含键menu的所有路由的列表。constroutes=[{"name":"userManagement","childRoutes":[{"name":"blogManagement","childRoutes":[{"name":"blog",//[].concat(...arr.map(v=>(Array.isArray(v)?deepFlatten(v):v)));//Shouldhandlenestingofrouteconstlinks=deepFlatten(routes).filter((r

javascript - 如何编写递归 d3.js 代码来处理嵌套数据结构?

我有functionalprogramming的背景并在原则上理解递归,但我似乎无法将这些知识转化为D3.js环境。我下面有一个helloworld脚本,它试图简单地打印嵌套数据结构的内容。根据其他线程的建议,我可以使用.filter仅返回节点,但如何继续此示例以递归打印嵌套项?functiondraw(data){"usestrict";d3.select("body").selectAll("p").data(data).enter().append("p").text(function(d){if(dinstanceofArray){return"WHATDOIPUTHERE?"

javascript - JSON.parse 应该是递归的吗?

我正在像这样解析一个json字符串:ring=JSON.parse(response);现在,ring是一个对象,但ring.stones只是一个字符串,而它也应该是一个对象。如果我调用:ring.stones=JSON.parse(ring.stones);它现在是正确的对象。我不知道这是否是正确的行为,或者我是否在某个地方遇到了阻止它递归解析的问题?如果应该递归解析,是否有任何已知问题会阻止它?更新这是解析前的完整响应:{"ring_id":"9","stone_count":"4","style_number":"样式4","syn10":"436.15","gen10":"48

javascript - Firebug 显示构造函数的无限递归

我想深入了解javascript的特定语言构造“原型(prototype)”。这是我的学习目的代码:varf=function(){};f.ext=1;f.prototype.pext=2;当我现在用Firebug调试这段代码时,我得到以下信息:这种无限嵌套从何而来?让我们从头开始(OK=unterstood):f(好)-分机(确定)-原型(prototype)(确定)-pext(确定)-构造函数(我卡在这一点上了)那是谁的构造函数?为什么我们有这种无限嵌套? 最佳答案 这仅仅是因为f===f.prototype.construct