随着 JavaScript 的发展,数组是最常用的数据类型之一,因此在 ES12 中增加了一些新的数组方法,以便更好地处理数组数据。本文将介绍 ES12 中的新数组方法,并提供示例代码。
1. Array.prototype.at()
Array.prototype.at()
方法返回指定索引位置的元素值。与 Array.prototype[index]
不同的是,如果索引位置超出了数组的范围,Array.prototype.at()
方法将返回 undefined
,而不是抛出异常。
const arr = ['a', 'b', 'c', 'd']; console.log(arr.at(0)); // 'a' console.log(arr.at(-1)); // 'd' console.log(arr.at(10)); // undefined
2. Array.prototype.flatMap()
Array.prototype.flatMap()
方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。与 Array.prototype.map()
不同的是,Array.prototype.flatMap()
方法会将映射函数返回的数组压缩到一个新数组中,而不是在新数组中创建一个嵌套数组。
const arr = [1, 2, 3, 4]; const result = arr.flatMap(x => [x * 2]); console.log(result); // [2, 4, 6, 8]
3. Array.prototype.filter()
Array.prototype.filter()
方法返回一个新数组,其中包含通过指定函数测试的所有元素。与 Array.prototype.filter()
不同的是,Array.prototype.filter()
方法可以使用异步函数。
const arr = [1, 2, 3, 4]; const result = arr.filter(async x => { return await Promise.resolve(x % 2 === 0); }); console.log(result); // [2, 4]
4. Array.prototype.findLast()
Array.prototype.findLast()
方法返回数组中满足测试函数的最后一个元素的值。如果没有找到满足条件的元素,则返回 undefined
。
const arr = [1, 2, 3, 4, 5]; const result = arr.findLast(x => x % 2 === 0); console.log(result); // 4
5. Array.prototype.findLastIndex()
Array.prototype.findLastIndex()
方法返回数组中满足测试函数的最后一个元素的索引。如果没有找到满足条件的元素,则返回 -1
。
const arr = [1, 2, 3, 4, 5]; const result = arr.findLastIndex(x => x % 2 === 0); console.log(result); // 3
6. Array.prototype.reduceRight()
Array.prototype.reduceRight()
方法从数组的最后一个元素开始,向前遍历数组,并将数组元素减少为单个值。与 Array.prototype.reduce()
方法不同的是,Array.prototype.reduceRight()
方法从数组的末尾开始计算,而不是从开头开始计算。
const arr = [1, 2, 3, 4, 5]; const result = arr.reduceRight((acc, val) => acc + val); console.log(result); // 15
7. Array.prototype.reverse()
Array.prototype.reverse()
方法用于颠倒数组中元素的顺序。该方法会修改原始数组,而不是创建一个新的数组。
const arr = [1, 2, 3, 4, 5]; arr.reverse(); console.log(arr); // [5, 4, 3, 2, 1]
结论
ES12 中有许多新的数组方法可以帮助我们更好地处理数组数据。这些新方法包括 Array.prototype.at()
、Array.prototype.flatMap()
、Array.prototype.filter()
、Array.prototype.findLast()
、Array.prototype.findLastIndex()
、Array.prototype.reduceRight()
和 Array.prototype.reverse()
。这些新方法提供了更多的灵活性和便利性,可以大大提高我们的编程效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/673d592bde2dedaeef398ec7