多维数组扁平化处理的几种方法

方法一、字符串化+数组化

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;
}
posted @ 2022-11-04 08:49  SultanST  阅读(24)  评论(0编辑  收藏  举报