flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。默认为1

    1. const arr1 = [0, 1, 2, [3, 4]];
    2. const arr2 = [0, 1, 2, [[[3, 4]]]];
    3. console.log(arr1.flat()); // [ 0, 1, 2, 3, 4 ]
    4. console.log(arr2.flat(2)); // [ 0, 1, 2, [ 3, 4 ] ]
    5. console.log(arr2.flat(Infinity)); // [ 0, 1, 2, 3, 4 ]

    更多参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/flat

    flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 连着深度值为1的 flat 几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些。

    1. const result = [1, 2, 3, 4];
    2. console.log(result.map((x) => [x * 2])); // [ [ 2 ], [ 4 ], [ 6 ], [ 8 ] ]
    3. console.log(result.flatMap((x) => [x * 2])); // [ 2, 4, 6, 8 ]
    4. console.log(result.flatMap((x) => [[x * 2]])); // [ [ 2 ], [ 4 ], [ 6 ], [ 8 ] ]