1.数组扁平化

数组扁平化,实际上就是将多维数组转换成一维数组
例如[1,2,[3,4,[5,6,[7,8]]]]->[1,2,3,4,5,6,7,8]

2.方法一:

Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维数组。该方法返回一个新数组,对原数据没有影响。
flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。
如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。

arr = arr.flat(Infinity)

3.方法二:

Array.prototype.join()用于将数组转换成字符串,再用String.prototype.split()将字符串转换成数组(转换成的数组每一项都是字符串,我们可以循环将每一项转换成数字)

arr = arr.join(',').split(',').map(item => Number(item));

4.方法三:

递归+for

function flatten(arr) {
    var res = [];
    for(let i = 0, length = arr.length; i < length; i++) {
    if(Array.isArray(arr[i])) {
        res = res.concat(flatten(arr[i])); //concat 并不会改变原数组
    } else{
        res.push(arr[i]);
    }
}
return res;
}

5.方法四:

while

function flatten(arr) {
    while(arr.some(item => Array.isArray(item))) {
        arr = [].concat(...arr);
    }
    return arr;
}

6.方法五:

reduce

function flatten(arr) {
    return arr.reduce((prev,cur) =>{
        return prev.concat(Array.isArray(cur)? flatten(cur) : cur);
    },[]);
}
Last modification:April 28th, 2021 at 09:38 pm
如果觉得我的文章对你有用,请随意赞赏