Flatten a mixed type array

by Steven Senkus

JavaScript

var arr = [1, {
    a: 2,
    b: []
}, '3', [
    [4, 5], 6], 7, 8, [9], null, true, false];

function flatten(arr) {

    var flattenedArray = [];

    function iterate(item) {
        switch (typeof item) {
            case 'number':
            case 'string':
            case 'boolean':
                flattenedArray.push(item);
                break;
            case 'object':
                Array.isArray(item) ? Array.prototype.forEach.call(item, iterate) : flattenedArray.push(item);
                break;
        }
		return flattenedArray;
    }

    return iterate(arr)
}

console.log(flatten(arr));