JS-数组扁平化的方法

260 阅读1分钟
//原数组
let arr= [1,[2,[3,4,[{a:5},'6']],7]];

1. 使用ES6中的Array.prototype.flat方法

arr.flat(Infinity);

2. 使用reduce的方式

function arrFlat(arr) {
    return arr.reduce((pre, cur) => {
        return pre.concat(Array.isArray(cur) ? arrFlat(cur) : cur);
    }, [])
}

3. 使用递归加循环的方式

function arrFlat(arr) {
    let result = [];
    arr.map((item, index) => {
        if (Array.isArray(item)) {
            result = result.concat(arrFlat(item));
        } else {
            result.push(item);
        }
    })
    return result;
}

或者

let result = [];
function arrFlat(arr){
    for(const key of arr){
        if(Array.isArray(key)){
            return arrFlat(key);
        }else{
            result.push(key);
        }
    }
}

4. 将数组先变成字符串,再复原 toString()

(只适用于数组元素全是String类型或Number类型)

function arrFlat(arr) {
    return arr.toString().split(',').map(item=>+item);
}