Вам не хватает объявления var
или let
для i
в вашем for
l oop, чтобы сделать его локальным, поэтому каждый раз, когда вы вызываете flatten
, значение сбрасывается. Измените
for (i=0; i < arr.length; i++) {
на
for (var i=0; i < arr.length; i++) {
, и код будет работать, как и ожидалось:
const flatten = (arr) => {
let newArr = []
for (let i=0; i < arr.length; i++) {
if(Array.isArray(arr[i])) {
newArr = [...newArr, ...flatten(arr[i])]
} else {
newArr.push(arr[i])
}
}
return newArr
}
console.log(flatten([[1],[2],3,[[4,5]], [6, 7]]))