随着 JavaScript 的发展,新的标准规范 ECMA-262 也随之推出,并带来了越来越多的新特性和新函数。在这篇文章中,我们将深入讨论 ES10 引入的新的数组函数,其中包括 Array.flat()
、Array.flatMap()
以及其他实用的新数组函数。
Array.flat()
Array.flat()
函数用于把嵌套的数组拉平,变成一维数组。这个函数接受一个参数,用于指定要拉平的嵌套层数,如果没有提供参数,则默认为 1。
下面是一个简单的例子:
const arr = [[1, 2], [3, 4], [5, 6]]; const flatArr = arr.flat(); console.log(flatArr); // [1, 2, 3, 4, 5, 6]
在上面的例子中,我们使用了 flat()
函数把原始的嵌套数组 arr
变成了一维数组 flatArr
。
有时候你可能会遇到一个嵌套层数不确定的数组,你可以使用 Infinity
参数来保证它被完全拉平。
Array.flatMap()
Array.flatMap()
函数是 Array.map()
和 Array.flat()
函数的结合体。它把一个数组中的每一个元素都映射到一个新数组中,并且使用 flat()
函数把这些新数组拉平成一个单一的数组。
下面是一个简单的例子:
const arr = [1, 2, 3]; const flatMapArr = arr.flatMap(x => [x * 2]); console.log(flatMapArr); // [2, 4, 6]
在上面的例子中,我们使用 flatMap()
函数对原始数组 arr
中的每一个元素都进行了乘以 2 的操作,并通过 flat()
函数把它们拉平成一个单一的数组。
值得注意的是,flatMap()
函数的回调函数必须返回一个数组,否则将会抛出错误。
Array.at()
Array.at()
函数用于获取数组中指定位置的元素。这个函数接受一个参数,用于指定要获取的位置,如果索引为负数,则从数组末尾开始计算。
下面是一个简单的例子:
const arr = ['a', 'b', 'c', 'd', 'e']; const element = arr.at(2); console.log(element); // "c"
在上面的例子中,我们使用 at()
函数获取了原始数组 arr
中索引为 2 的元素。
Array.filter()
Array.filter()
函数用于过滤数组中的元素。这个函数接受一个回调函数作为参数,用于判断元素是否满足过滤条件。
下面是一个简单的例子:
const arr = [1, 2, 3, 4, 5]; const filteredArr = arr.filter(x => x % 2 === 0); console.log(filteredArr); // [2, 4]
在上面的例子中,我们使用 filter()
函数把原始数组 arr
中的偶数元素过滤出来,生成了一个新的数组 filteredArr
。
Array.find()
Array.find()
函数用于查找数组中满足条件的第一个元素。这个函数接受一个回调函数作为参数,用于判断元素是否满足条件。
下面是一个简单的例子:
const arr = [1, 2, 3, 4, 5]; const foundElement = arr.find(x => x > 2); console.log(foundElement); // 3
在上面的例子中,我们使用 find()
函数查找了原始数组 arr
中第一个大于 2 的元素,并返回了它。如果没有找到符合条件的元素,则 find()
函数会返回 undefined
。
Array.findIndex()
Array.findIndex()
函数用于查找数组中满足条件的第一个元素的索引。这个函数接受一个回调函数作为参数,用于判断元素是否满足条件。
下面是一个简单的例子:
const arr = [1, 2, 3, 4, 5]; const foundIndex = arr.findIndex(x => x > 2); console.log(foundIndex); // 2
在上面的例子中,我们使用 findIndex()
函数查找了原始数组 arr
中第一个大于 2 的元素的索引,并返回了它。如果没有找到符合条件的元素,则 findIndex()
函数会返回 -1。
Array.includes()
Array.includes()
函数用于检查数组中是否包含某个元素。这个函数接受一个参数,用于指定要检查的元素。
下面是一个简单的例子:
const arr = [1, 2, 3, 4, 5]; const includes1 = arr.includes(1); const includes6 = arr.includes(6); console.log(includes1); // true console.log(includes6); // false
在上面的例子中,我们使用 includes()
函数检查了原始数组 arr
中是否包含了指定的元素。如果包含,则返回 true
,否则返回 false
。
Array.some()
Array.some()
函数用于检查数组中是否存在满足条件的元素。这个函数接受一个回调函数作为参数,用于判断元素是否满足条件。
下面是一个简单的例子:
const arr = [1, 2, 3, 4, 5]; const hasEven = arr.some(x => x % 2 === 0); const hasZero = arr.some(x => x === 0); console.log(hasEven); // true console.log(hasZero); // false
在上面的例子中,我们使用 some()
函数检查了原始数组 arr
是否存在偶数元素和值为 0 的元素。如果存在,则返回 true
,否则返回 false
。
Array.every()
Array.every()
函数用于检查数组中是否所有元素都满足条件。这个函数接受一个回调函数作为参数,用于判断元素是否满足条件。
下面是一个简单的例子:
const arr = [1, 2, 3, 4, 5]; const allPositive = arr.every(x => x > 0); const allEven = arr.every(x => x % 2 === 0); console.log(allPositive); // true console.log(allEven); // false
在上面的例子中,我们使用 every()
函数检查了原始数组 arr
中的每一个元素是否都是正数和偶数。如果都满足条件,则返回 true
,否则返回 false
。
Array.flat()、Array.flatMap() 及其它实用的新数组函数:总结
在本文中,我们深入探讨了 ES10 引入的新的数组函数 Array.flat()
、Array.flatMap()
及其他实用的新数组函数,涵盖了数组的创建、遍历和转换等方面的知识点。这些函数不仅可以提高你的开发效率,同时也有助于你更好地理解和使用 JavaScript 中的数组。希望本文对你们有所帮助,也欢迎大家在评论中留言和分享。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6645996dd3423812e4399471