function steamrollArray(arr) {
let flattenedArray = [];
//recursion function
function flattenArray(arg){
//initialize an empty array
if(!Array.isArray(arg))
flattenedArray.push(arg);
else
for(var ele in arg)
flattenArray(arg[ele]);
}
//watch forEach usage;
arr.forEach(flattenArray);
return flattenedArray;
}
//test case
steamrollArray([1, [2], [3, [[4]]]]); //return [1,2,3,4]
steamrollArray([[1, {}, [3, [[4]]]]); //return [1, {}, 3, 4]
或者精简方法
function steamrollArray(arr) {
let flat = [].concat(...arr);
return flat.some(Array.isArray) ? steamrollArray(flat) : flat;
}
//test case
flattenArray([1, [2], [3, [[4]]]]);