在 ES2020 中,JavaScript 提供了两个新的数组扁平化操作函数 Array.flat 和 Array.flatMap。这两个函数为我们处理数组的嵌套结构提供了极大的便利,同时也增加了代码的可读性和可维护性。
Array.flat
Array.flat 函数用于将数组扁平化,即将多维数组变成一维数组。我们在处理嵌套数组时,经常需要将其扁平化再进行操作。而使用 Array.flat 函数可以一步到位地完成这个操作。
Array.flat 函数接受一个可选参数 depth,用于指定需要扁平化的维度。如果不使用该参数,则默认扁平化一级。
下面是一个使用 Array.flat 的示例代码:
const arr = [1, 2, [3, 4], [5, [6, 7]]]; const flatArr1 = arr.flat(); console.log(flatArr1); // [1, 2, 3, 4, 5, [6, 7]] const flatArr2 = arr.flat(2); console.log(flatArr2); // [1, 2, 3, 4, 5, 6, 7]
在上面的代码中,我们首先定义了一个嵌套数组 arr,它包含了多个维度。然后通过调用 flat 函数,将其扁平化成了一维数组。我们可以看到,第一次使用 flat 函数时,默认扁平化了一级,而第二次使用 flat 函数时,指定了参数为 2,将其扁平化成了二维数组。这里值得注意的是,如果指定的 depth 值大于数组嵌套的层数,则 flat 函数会将数组完全扁平化。
Array.flatMap
Array.flatMap 函数则在 flat 的基础上,增加了一个可以在扁平化前进行映射的参数,扁平化后再返回一个新数组的操作。该函数常常用于实现数组的 map 和 flat 操作的组合。
Array.flatMap 函数的使用十分简单,我们只需要传入一个回调函数作为参数,该回调函数会对每个数组项进行映射和转化。下面是一个示例代码:
const arr = [1, 2, 3]; const flatMapArr = arr.flatMap(item => [item * 2]); console.log(flatMapArr); // [2, 4, 6]
在上面的代码中,我们首先定义了一个数组 arr,然后给其调用了 flatMap 函数。在 flatMap 函数的回调函数中,我们将每个数组项扩大了两倍,然后再返回一个新的数组。这样,最终得到的 flatMapArr 就是一个扁平化后的新数组。
总结
Array.flat 和 Array.flatMap 是 ES2020 新增的数组扁平化操作函数,它们可以大大简化处理嵌套数组的代码,让我们的代码更加简洁和易于维护。在具体使用时,我们需要注意 flat 和 flatMap 函数的参数设置以及回调函数的编写,才能充分发挥其威力。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6485542948841e9894434796