阅读 272

数组扁平化

多个嵌套数组如何变成一个数组呢?

方法一:使用flat()

const arr1 = [1,  [2, [3, [4,5]]], 6]
const res1 = arr. flat(Infinity);
复制代码

方法二:利用正则表达式

const arr1 = [1,  [2, [3, [4,5]]], 6]
const re2 = JSON.stringify(arr1).replace(/\[|\]/g,'')
console.log(re2);
复制代码

ps:但数据类型都会变为字符串

方法三:正则改良版本

const arr1 = [1,  [2, [3, [4,5]]], 6]
const res3 = JSON.parse('[' + JSON.stringify(arr1).replace(/\[|\]/g, '') + ']');
复制代码

方法四:使用reduce

reduce内容较多,单独开出来一章讲

const arr1 = [1,  [2, [3, [4,5]]], 6]
const flatten = arr1 => {
    return arr.reduce(
        (pre, cur) => { return pre.concat(Array.isArray(cur) ? flatten(cur) : cur); }, [])
}
const res4=flatten(arr1)
复制代码

方法五: 函数递归

const arr1 = [1,  [2, [3, [4,5]]], 6]
const res5 = [];
constfn = arr1 => {
    for (let i = 0; i < arr.length; i++) {
        if (Array.isArray(arr[i])) {
            fn(arr[i]);
        } else {
            res5.push(arr[i]);
        }
    }
}
fn (arr1)


复制代码
文章分类
前端
文章标签