JavaScript - Flatten a nested array
Flatten a nested array. You must account for varying levels of nesting.
Ex - steamrollArray([1, [2], [3, [[4]]]]) should return [1, 2, 3, 4].
Solution 1 Basic approach
var newArr = [];
function steamrollArray(arr) {
for (var i = 0; i < arr.length; i++) {
console.log(arr[i])
if (Array.isArray(arr[i])) {
steamrollArray(arr[i]);
} else {
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(steamrollArray([1, [2], [3, [[4]]]]));
Output:
[ 1, 2, 3, 4 ]
Solution 2 Using forEach
function steamrollArray(arr) {
var oneArr = []
flatten(arr);
function flatten(arr) {
arr.forEach(arr2 => {
if (!Array.isArray(arr2)) {
oneArr.push(arr2);
}
else {
flatten(arr2);
}
});
} return oneArr
}
console.log(steamrollArray([1, [2], [3, [[4]]]]));
Output:
[ 1, 2, 3, 4 ]
Solution 3 Ternary
function steamrollArray(arr) {
let flat = [].concat(...arr);
return flat.some(Array.isArray) ? steamrollArray(flat) : flat;
}
console.log(steamrollArray([1, [2], [3, [[4]]]]));
Output:
[ 1, 2, 3, 4 ]
Solution not working or have any suggestions? Please send an email to [email protected]
Download Android App