, .
function flatten(a, i = 0) {
if (i >= a.length)
return;
var elt = a[i];
if (!Array.isArray(elt))
i++;
else
if (elt.length) {
(function shift(a, i, n = a.length) {
if (n > i ) a[n] = a[n-1], shift(a, i, --n);
}(a, i));
a[i] = elt.shift();
a[i + 1] = elt;
}
else
(function unshift(a, i) {
if (i < a.length) a[i] = a[i+1], unshift(a, ++i);
else a.length--;
}(a, i));
flatten(a, i);
}
var arr = [[[2, 3], 4], 5, [6, 7]];
flatten(arr);
console.log(arr);
[2, 3, 4, 5, 6, 7]
ES6, Array.isArray. ES6, .
user663031