I am trying to flatten an array but I'm having difficulties.
My code:
var arr = [["2"],["3", "4"], "5", [["6"], ["7"]] ];
var res = [].concat.apply([], arr);
//Using reduce(ES5)
function test(args){
var sum = args.reduce(function(acc, val){
acc.concat(Array.isArray(val)? test(val): val);
});
}
//Regular implementation
function test2(arr){
var result = [];
arr.forEach(function(val){
if(Array.isArray(val)){
result = [].concat.apply([], val);
} else {
result.concat(val);
}
});
return result;
}
console.log(test(arr));
console.log(test2(arr));
Expected Output:
["2", "3", "4","5", "6", "7"]
Can someone enlighten me where I'm going wrong?