javascript - ForEach fungerer ikke, men For fungerer fint
Min logikk fungerer fint med for-løkke, men den fungerer ikke med foreach.
Ikke sikker på hvorfor?
Nedenfor er koden min.
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)
}
Utdata er ,
rot -A -B ---C
Og jeg prøvde med, forEach
flatItems.forEach(flatItem => {})
Men min utdata er forskjellig,
root -A -A -B ---C
Så problemet er at en ekstra -A blir lagt til.
Hvordan får jeg det til å fungere ved å bruke forEach. Vennligst hjelp.
Svar #1
i for-løkken din er den første 'i' satt til 1 og ikke fra 0, så løkken starter fra indeks 1. I .forEach() starter løkken fra 0, derfor starter løkken fra 0. Derfor får du en ekstra løkke og en ekstra 'A'
Svar #2
Du starter for-løkka på indeksen 1 i stedet for null
for (let i = 1; i < flatItems.length; i++)
-------------^
foreach starter på indeks null som standard
Du kan sjekke i løkken din om indeksen er null og bruke return for å få samme resultat
Liker :
flatItems.forEach((flatItem, index) => {
if (index === 0) return;
})
Eller ved å bruke slice :
flatItems.slice(1).forEach(flatItem => {})
