扁平化数组(多维数组=>一维数组)
一、递归 (concat)
循环数组元素,判断是否是一个数组Array.isArray,就递归调用该方法
var arr=[1,[2,3,[4]]];
function flatten(arr){
var res = [];
for(var i=0;i<arr.length;i++){
if(Array.isArray(arr[i])){
res = res.concat(flatten(arr[i]));
}else{
res.push(arr[i]);
}
}
return res;
}
flatten(arr);
二、reduce
使用reduce来简化代码:
function flatten(arr){
return arr.reduce(function(prev,item){
return prev.concat(Array.isArray(item)?flatten(item):item);
},[]);
ES6的flat()
var newArray = arr.flat(Infinity);