function flattenArray(arr) { let result = []; arr.forEach((item) => { if (Array.isArray(item)) { result.concat(flattenArray(item)); } else { result.push(item); } }); return result; } console.log(flattenArray([1, [2, [3, [4]]]]));
Array.prototype.concat() doesn’t mutate the original array, it returns a new array. To fix the issue, we need to assign the return value of result.concat(flattenArray(item)) back to result.
function flattenArray(arr) { let result = []; arr.forEach((item) => { if (Array.isArray(item)) { result = result.concat(flattenArray(item)); } else { result.push(item); } }); return result; } console.log(flattenArray([1, [2, [3, [4]]]]));