js数组扁平化的几种实现方式

1. 递归调用

let res = [];
function flattern(arr) {
    arr.map(item => {
        if (Array.isArray(item))
            res.concat(flattern(item));
        else
            res.push(item);
    })
}

2. reduce结合递归

function flattern(arr) {
    return arr.reduce((data, item) => {
        return data.concat(
            Array.isArray(item) ? flat(item) : item);
    }, []);
}

3. 使用数组some遍历,只要数组里面含有数组则解构一次

while (arr.some(Array.isArray)) {
    arr = [].concat(...arr);
}

4. 字符串替换

arr = JSON.stringify(arr);// [1,3,4,[2,5],[9,[6,8]]]
arr = arr.replace(/\[|\]/g, '');// 1,3,4,2,5,9,6,8
arr = '[' + arr + ']';// [1,3,4,2,5,9,6,8]
arr = JSON.parse(arr);

5. 使用原生方法

arr = arr.flat(Infinity);// 传入的值代表深度
posted @ 2020-07-06 08:54  aeipyuan  阅读(469)  评论(0编辑  收藏  举报