手写一个flat函数

134 阅读1分钟

1.最简单实现方法

直接在浏览器终端输入就可以实现数组展平

image.png

2.用 while 循环+ some方法

some 方法测试数组中是不是至少有 1 个元素通过了被提供的函数测试。它返回的是一个 Boolean 类型的值。

concat()  方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

通过some来判断数组中是否用数组,通过while不断循环执行判断, 如果是数组的话可以使用 拓展运算符...  每次只能展开最外层的数组,加上contact来减少嵌套层数,

const arr = [1, 2, 3, [4, 5, [6, [7, 8, [9, 10, [11, 12, [13]]]]]]]
const flatten = (arr) => {
    while (arr.some(item => Array.isArray(item))) {
        arr = [].concat(...arr)
    }
    return arr
}
console.log(flatten(arr)) //(8) [1, 2, 3, 4, 5, 7, 8, 9]