【问题标题】:Javascript, use function as recursion deep counterJavascript,使用函数作为递归深度计数器
【发布时间】: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


【解决方案1】:

是的,你可以这样做

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

并且可以在 Javascript 中做到这一点

【讨论】:

    猜你喜欢
    • 2021-02-21
    • 2022-10-15
    • 2017-12-05
    • 2012-03-12
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    相关资源
    最近更新 更多