使用 ES7 中的 Array.prototype.flatMap 方法扁平化双层数组

在前端开发中,我们经常需要处理数组数据。当数组嵌套多层时,我们通常需要将其扁平化便于操作处理。在 ES7 中,有一种新的方法可以帮助我们轻松地实现数组的双层扁平化,那就是 Array.prototype.flatMap 方法。

什么是 Array.prototype.flatMap 方法

Array.prototype.flatMap() 方法是在 ES7 中新增加的一个方法,用于对数组进行映射和扁平化操作。

该方法和 Array.prototype.map() 方法作用一样,都是针对数组中的每个元素进行操作,返回一个新的数组,不改变原数组。与 Array.prototype.flat() 方法不同的是,Array.prototype.flatMap() 方法的返回结果会自动去除一层嵌套。

该方法的语法如下:

其中,callback 函数能够接收三个参数:

  • currentValue:数组中正在处理的当前元素。
  • index(可选):当前元素的索引值。
  • array(可选):调用 flatMap 方法的数组本身。

另外,thisArg 参数也可选,表示 callback 函数中 this 的指向。

使用 Array.prototype.flatMap 方法扁平化双层数组

借助 Array.prototype.flatMap 方法,我们可以用更加简洁的代码实现数组的双层扁平化操作。

在下面的示例中,我们将 array1 数组中的双层数组扁平化,得到只有一层的新数组 new_array1:

在上面的代码中,我们使用了箭头函数来定义 callback 函数,将返回值设置为了 item(即每个子数组),这样就能够将数组扁平化为只有一层了。

同样地,我们还可以通过链式调用法,在一个数组中完成多层扁平化的操作。在下面的示例中,我们将 array2 数组中的双层数组扁平化,得到只有一层的新数组 new_array2:

同样地,我们将 callback 函数的返回值也设置为了 item,这样就能够继续扁平化数组。

结论

  • Array.prototype.flatMap() 方法是新增加的数组方法,能够将双层数组扁平化。
  • 该方法和 Array.prototype.map() 方法作用一样,都是对数组中的每个元素进行操作,返回一个新的数组,不改变原数组。
  • 与 Array.prototype.flat() 方法不同的是,Array.prototype.flatMap() 方法的返回结果会自动去除一层嵌套。
  • 使用 Array.prototype.flatMap 方法,我们可以用更加简洁的代码实现数组的双层扁平化操作。

参考资料

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6738c8c6317fbffedf12d62f


纠错
反馈