【发布时间】:2019-11-08 03:23:57
【问题描述】:
是否可以将函数用作递归计数器?我尝试使用从另一个对象给出的深度计数器进行递归。对于某些情况,它将是数字,对于另一个字符串连接。例如 - 在每次调用 deep.inc() 时交换 deepLevel + 1。 但在那种情况下,我在堆栈上没有适当的价值......
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}
【问题讨论】:
-
你有一些数据来显示想要的结果吗?也许一些代码,你也试过了吗?
-
您的代码应该可以工作。它的哪一部分没有按您的预期工作?
-
这个问题很不清楚,需要澄清一下
-
顺便说一句,
f1在做什么? -
我做了一些更改并发布了部分代码
标签: javascript function recursion ecmascript-6