我的逻辑在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
使它工作。请帮忙。
答案 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 => {})