数组扁平化处理

796 阅读1分钟

有这样一种数组:

const arr = [1,[2,[3,[4,5],6],7],8]

当我们需要将它变成一维数组时,使用的操作就是扁平化处理。

第一种:使用js自带的方法 flat()

console.log(arr.flat(3))

结果如下

Snipaste_2021-08-16_10-40-06.png

第二种:使用正则表达式

const res1 = JSON.stringify(arr).replace(/\[|\]/g, '').split(',')
// 得到的是一个字符串数组,将它转化成数字。
console.log(JSON.parse('[' + res1 + ']'))

第三种:利用递归

遍历数组内的每一项,当这一项仍然是数组的时候就遍历该数组,直到不是数组,非数组项将其push进新数组

        const arr1 = []
        const fn = (arr) => {
            for (let i = 0; i < arr.length; i++) {
                if (Array.isArray(arr[i])) {
                    fn(arr[i])
                } else {
                    arr1.push(arr[i])
                }
            }
        }
        fn(arr)
        console.log(arr1)

使用reduce

const newArr = (arr) => {
            return arr.reduce((pre, cur) => {
                return pre.concat(Array.isArray(cur) ? newArr(cur) : cur)
            }, [])
        }
        console.log(newArr(arr))