在 JavaScript 的 ES10 版本中,新增了两个 Array 原型方法,它们分别是 flat
和 flatMap
。这两个方法可以帮助我们更加方便地操作数组,提高代码的可读性和效率。
Array.prototype.flat
flat
方法用于将多维数组扁平化为一维数组。它的语法如下:
arr.flat([depth])
其中,arr
是需要扁平化的数组,depth
是可选参数,表示扁平化的深度,默认值为 1。
如果数组中存在多维数组,flat
方法会将它们展开成一维数组。例如:
const arr = [1, [2, 3], [4, [5, 6]]]; const flatArr = arr.flat(); console.log(flatArr); // [1, 2, 3, 4, [5, 6]]
如果我们将 depth
设置为 2,则会将嵌套在数组中的数组也扁平化:
const arr = [1, [2, 3], [4, [5, 6]]]; const flatArr = arr.flat(2); console.log(flatArr); // [1, 2, 3, 4, 5, 6]
需要注意的是,flat
方法会移除数组中的空项,例如:
const arr = [1, , [2, 3], , [4, [5, 6]]]; const flatArr = arr.flat(); console.log(flatArr); // [1, 2, 3, 4, [5, 6]]
Array.prototype.flatMap
flatMap
方法是 map
和 flat
方法的组合,它的语法如下:
arr.flatMap(callback[, thisArg])
其中,arr
是需要操作的数组,callback
是回调函数,用于对数组进行操作,thisArg
是可选参数,表示回调函数中的 this
值。
flatMap
方法会先对数组进行 map
操作,然后再对结果进行一次扁平化操作。例如:
const arr = [1, 2, 3]; const flatMapArr = arr.flatMap(item => [item * 2]); console.log(flatMapArr); // [2, 4, 6]
在上面的例子中,我们使用 flatMap
对数组进行了一次 map
操作,并将每个元素都乘以 2,然后再将结果扁平化为一维数组。
需要注意的是,flatMap
方法会自动移除数组中的空项,例如:
const arr = [1, 2, 3]; const flatMapArr = arr.flatMap(item => [item, , item * 2]); console.log(flatMapArr); // [1, 2, 2, 3, 4, 6]
总结
ES10 中新增的 flat
和 flatMap
方法可以帮助我们更加方便地操作数组,提高代码的可读性和效率。需要注意的是,flat
方法会移除数组中的空项,而 flatMap
方法会自动移除数组中的空项。
在实际开发中,我们可以根据具体的需求选择使用这两个方法。例如,如果我们需要将多维数组扁平化为一维数组,可以使用 flat
方法;如果我们需要对数组进行一次 map
操作并将结果扁平化,可以使用 flatMap
方法。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65631fdfd2f5e1655dcce345