ES7 中的 Array.prototype.at()
在 JavaScript 中使用数组是非常常见的,但在以往的 ES6 中,如果我们想要访问数组中的某一项,只能通过索引值将其取出,如 arr[0]、arr[1]……,为了方便开发人员更加便捷地获取数组中某个位置的数据, ES7 中新增了 Array.prototype.at() 方法,它可以直接获取数组中指定位置的值。
Array.prototype.at() 方法的语法如下:
arr.at(index)
其中 arr 表示要操作的数组,index 为指定的位置,如果 index 为负数,则从数组末位开始计数,比如 -1 代表数组中的最后一项。
Array.prototype.at() 方法的特性:
- 如果 index 大于等于数组的 length,返回 undefined。
- 如果 index 为负数且其绝对值大于数组的 length,则返回 undefined。
- 如果 index 是一个非数字(比如字符串),则会强制将其转换为数字。
下面是一个使用示例:
const arr = ['a', 'b', 'c', 'd']; console.log(arr.at(1)); // 输出 "b" console.log(arr.at(-2)); // 输出 "c" console.log(arr.at(5)); // 输出 undefined console.log(arr.at(-5)); // 输出 undefined console.log(arr.at('1')); // 输出 "b" console.log(arr.at('a')); // 输出 undefined
通过上面的示例可以看出,Array.prototype.at() 方法可以很方便地获取数组中指定位置的值,同时也可以避免数组越界和类型转换等问题。
我们还可以使用此方法实现一些实际应用场景,比如常见的数组去重:
const arr = [1, 1, 2, 3, 3, 4]; const resultArr = [...new Set(arr.map((item, index, arr) => arr.at(index)))]; console.log(resultArr); // 输出 [1, 2, 3, 4]
通过 Array.prototype.map() 方法将 arr 数组中的每一项都映射到一个数组中,再通过 Set 对象去重,最后使用展开运算符将结果转换为数组。
总结
Array.prototype.at() 方法的出现可以方便了开发人员获取数组中指定位置的值,并且可以避免访问越界和类型转换所带来的问题。我们建议在进行数组访问时优先考虑使用 Array.prototype.at() 方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6495e4fd48841e98942e7483