多维数组扁平化处理的几种方法
方法一、字符串化+数组化
function flatten(arr) {
let count = 0;
return arr.toString().split(',').map(function(item) {
return Number(item)
})
}
flatten([1, [2, 3, [4, 5]]])
function flattenNew(arr) {
return arr.join(',').split(',').map(function(item) {
return parseInt(item);
})
}
flattenNew([1, [2, 3, [4, 5]]])
方法二、reduce实现法
function flatten(arr) {
return arr.reduce((result, item)=> {
return result.concat(Array.isArray(item) ? flatten(item) : item);
}, []);
}
flatten([1, [2, 3, [4, 5]]])
方法三、扩展运算符法
//根据这个结果我们可以做一个遍历,若arr中含有数组则使用一次扩展运算符,直至没有为止。
function flatten(arr) {
while(arr.some(item=>Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
flatten([1, [2, 3, [4, 5]]])
方法四、递归
function flatten(arr) {
var res = [];
arr.map(item => {
if(Array.isArray(item)) {
res = res.concat( flatten(item) );
} else {
res.push(item);
}
});
return res;
}