数组扁平化的几种方式

103 阅读1分钟

数组扁平化的几种方式

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

方式一:ES6 flat

     let newArr = arr.flat(Infinity)

      console.log(newArr, 'newArr')

方式二:递归处理

        const flat = (arr) => {
            let result = [];

            for (const item of arr) {
                item instanceof Array ? result = result.concat(flat(item)) : result.push(item)
            }
            return result;
        }

方式三:reduce 递归

    const flat2 = (arr) => {
            return arr.reduce((prev, cur) => {
                return prev.concat(cur instanceof Array ? flat(cur) : cur)
            }, [])
        }
   

方式四:while 循环

      const flat3 = (arr) => {
            while (arr.some(Array.isArray)) {
                arr = [].concat(...arr)
            }

            return arr
       }