Flatten Arrays
by dpnminh
JavaScript
function Flatten(arr){
if (!Array.isArray(arr)) return [arr];
var flattened = [];
for (var i = 0; i < arr.length; i++){
var element = arr[i];
if (Array.isArray(element)) {
var flattenedElement = Flatten(element);
flattened = flattened.concat(flattenedElement);
}
else{
flattened.push(element);
}
}
return flattened;
}
function Flatten2(arr){
var reducer = (flatten, original) => flatten.concat(Array.isArray(original) ? Flatten2(original) : original);
return arr.reduce(reducer, []);
}
function Flatten3(arr){
var flatten = [];
while (arr.length){
var element = arr.shift();
if (Array.isArray(element)){
arr = element.concat(arr);
}
else{
flatten.push(element);
}
}
return flatten;
}
(function(){
var arr = [1,[1,2,[1,2,3,[1,2,3,4],5],6],7];
console.log(Flatten(arr));
console.log(Flatten2(arr));
console.log(Flatten3(arr));
})();