Q: Flatten Array
Recursive Solution
function flatten(arr) {
if (!Array.isArray(arr)) {
return [arr];
}
var array = [];
for (var i = 0; i < arr.length; i++) {
array = array.concat(flatten(arr[i]));
}
return array;
}
flatten([1, [2, [3]], [4]]); // => [1,2,3,4]
Iterative Solution
function flatten(arr) {
var array = [];
while (arr.length) {
var value = arr.shift();
if (Array.isArray(value)) {
// this line preserve the order
arr = value.concat(arr);
} else {
array.push(value);
}
}
return array;
}
flatten([1, [2, [3]], [4]]); // => [1,2,3,4]