Javascript,将函数用作递归深度计数器
是否可以将函数用作递归计数器?我尝试使用另一个对象提供的深度计数器进行递归。对于某些情况,它将是数字,对于另一个字符串连接。例如,在对deep.inc()的每次调用中交换deepLevel+1。 但是在这种情况下,我在堆栈上没有合适的值Javascript,将函数用作递归深度计数器,javascript,function,recursion,ecmascript-6,Javascript,Function,Recursion,Ecmascript 6,是否可以将函数用作递归计数器?我尝试使用另一个对象提供的深度计数器进行递归。对于某些情况,它将是数字,对于另一个字符串连接。例如,在对deep.inc()的每次调用中交换deepLevel+1。 但是在这种情况下,我在堆栈上没有合适的值 const render = (formatterData, parcedData) => { const iter = (depth, data) => { const mapped = data.map((node) => {
const render = (formatterData, parcedData) => {
const iter = (depth, data) => {
const mapped = data.map((node) => {
const { children = [] } = node;
const renderedChildren = children.length > 0 ? iter(depth.inc(), children) : '';
return `${formatterData.format(depth, node, renderedChildren)}`;
});
return `${mapped.join('')}`;
};
return `${formatterData.startElement}${iter(formatterData.depth, parcedData)}\n${formatterData.endElement}`;
};
FormatterData是render给定的对象,取决于渲染类型
const formatterData = {
startElement: '{',
endElement: '}',
depth: {
level: 1,
get() {
return this.level;
},
inc() {
this.level += 1;
return this;
},
},
format(depth, node, line) {
const { nodeRender } = getNodeRender(node);
return `${nodeRender(node, depth, line)}`;
},
};
Now part of console output looks like:
depth = {"level":2}
depth = {"level":3}
depth = {"level":3}
depth = {"level":4}
depth = {"level":5}
depth = {"level":6}
depth = {"level":7}
depth = {"level":8}
depth = {"level":9}
depth = {"level":10}
but should be:
depth = {"level":2}
depth = {"level":3}
depth = {"level":4}
depth = {"level":5}
depth = {"level":4}
depth = {"level":3}
depth = {"level":2}
是的,你可以这样做
const f = (deep, something) => {
.....
var n = parseInt(deep);
f1(deep, something);
return f(deep +1, something);
}
在Javascript中也可以这样做,您是否有一些数据来显示想要的结果?也许是一些代码,你也试过了?你的代码应该可以用。它的哪一部分没有像你期望的那样工作?这个问题很不清楚,需要澄清。顺便说一句,
f1
在做什么?我做了一些更改并发布了部分代码