Flatten an array

by dhchow

JavaScript

// [a, b, c, [d, e, f]]

function flatten(arr) {
    var result = [];

    for (var i = 0; i < arr.length; i++) {
        if (arr[i] instanceof Array) {
            result = result.concat(arr[i].flatten());
        } else {
            result.push(arr[i]);
        }
    }
    
    return result;
}

Array.prototype.flatterize = function(){
    var result = [];

    for (var i = 0; i < this.length; i++) {
        if (this[i] instanceof Array) {
            result = result.concat(this[i].flatterize());
        } else {
            result.push(this[i]);
        }
    }
    
    return result;
}

console.log( flatten([1, 2, 3]) );

console.log( flatten([1, 2, 3, [4, 5, 6]]) );

console.log( flatten([1, 2, 3, [4, 5, 6, [7, 8, 9]]]) );

console.log( flatten([[1, [2, [3, [4, [5, [6, [7, [8, [9, [0]]]]]]]]]]]) );

console.log([[1, [2, [3, [4, [5, [6, [7, [8, [9, [0]]]]]]]]]]].flatterize());