function flatten(arr) {
for(var i = 0; i < arr.length; ++i) {
if (Array.isArray(arr[i])) {
var args = [i, 1].concat(arr[i]);
Array.prototype.splice.apply(arr, args);
--i;
}
}
return arr;
}
function flatten2(arr) {
return arr.reduce(function(acc, el) {
if (Array.isArray(el)) {
return acc.concat(flatten2(el));
}
return acc.concat([el]);
}, []);
}
var arr1 = [1, 2, [3, 4, [[5, 6], 7], 8, 9]];
console.log(flatten(arr1));
console.log(flatten2(arr1));