ForEach无效,但For正常

时间:2019-05-15 11:20:36

标签: javascript typescript

我的逻辑在for循环中工作正常,但是在foreach中却无效。

不确定为什么吗?

下面是我的代码。

  for (let i = 1; i < flatItems.length; i++) {
    const flatItem = flatItems[i]
    const depthDiff = flatItem.depth - (stack.length - 1)
    if (depthDiff <= 0) {
      removeFromEnd(stack, -depthDiff + 1)
    }
    const stackTop = stack[stack.length - 1]
    const newEl = {
      text: flatItem.text,
      children: [],
    }
    stackTop.children.push(newEl)
    stack.push(newEl)
  }

输出为

  

根   -一种   -B   --- C

我尝试了forEach

flatItems.forEach(flatItem => {})

但是我的输出不同,

  

根   -一种   -一种   -B   --- C

因此,问题是要添加的另外-A

如何使用forEach使它工作。请帮忙。

2 个答案:

答案 0 :(得分:3)

在for循环中-初始的'i'设置为1,而不是从0开始。因此循环从索引1开始。 在.forEach()中,循环从0开始。因此循环从0开始。因此,您将获得附加的循环和附加的'A'

答案 1 :(得分:2)

您正在从索引1而不是零开始for循环

for (let i = 1; i < flatItems.length; i++)
-------------^

foreach默认从索引零开始

您可以检查索引是否为零,并使用return获得相同的结果

赞:

flatItems.forEach((flatItem, index) => {
    if (index === 0) return;

})

或使用slice

flatItems.slice(1).forEach(flatItem => {})