Javascript,将函数用作递归深度计数器

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) => {

是否可以将函数用作递归计数器?我尝试使用另一个对象提供的深度计数器进行递归。对于某些情况,它将是数字,对于另一个字符串连接。例如,在对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}
是的,你可以这样做

const f = (deep, something) => {
 .....
 var n = parseInt(deep);
 f1(deep, something);
 return f(deep +1, something);
}

在Javascript中也可以这样做,您是否有一些数据来显示想要的结果?也许是一些代码,你也试过了?你的代码应该可以用。它的哪一部分没有像你期望的那样工作?这个问题很不清楚,需要澄清。顺便说一句,
f1
在做什么?我做了一些更改并发布了部分代码