## 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 ]`