Array.prototype.at()
at()
方法是 Array
实例的方法,它接受一个整数值并返回该索引处的项目,允许使用正整数和负整数。负整数从数组中的最后一个项目开始倒数。
试一试
语法
js
at(index)
参数
返回值
与给定索引匹配的数组中的元素。如果 index < -array.length
或 index >= array.length
,则始终返回 undefined
,而无需尝试访问相应的属性。
描述
当 index
是非负整数时,at()
方法等效于方括号表示法。例如,array[0]
和 array.at(0)
都返回第一个项目。但是,当从数组的末尾计算元素时,不能像在 Python 或 R 中那样使用 array[-1]
,因为方括号内的所有值都按字面意思视为字符串属性,因此最终会读取 array["-1"]
,它只是一个普通的字符串属性,而不是数组索引。
通常的做法是访问 length
并根据它计算索引 - 例如,array[array.length - 1]
。at()
方法允许相对索引,因此这可以简化为 array.at(-1)
。
通过将 at()
与 with()
结合使用,可以使用负索引读取和写入(分别)数组。
at()
方法是 泛型 的。它只期望 this
值具有 length
属性和整数键属性。
示例
返回数组的最后一个值
以下示例提供了一个函数,该函数返回在指定数组中找到的最后一个元素。
js
// Our array with items
const cart = ["apple", "banana", "pear"];
// A function which returns the last item of a given array
function returnLast(arr) {
return arr.at(-1);
}
// Get the last item of our array 'cart'
const item1 = returnLast(cart);
console.log(item1); // 'pear'
// Add an item to our 'cart' array
cart.push("orange");
const item2 = returnLast(cart);
console.log(item2); // 'orange'
比较方法
此示例比较了选择 Array
的倒数第二个(最后第二个)项目的不同方法。虽然下面显示的所有方法都是有效的,但此示例突出了 at()
方法的简洁性和可读性。
js
// Our array with items
const colors = ["red", "green", "blue"];
// Using length property
const lengthWay = colors[colors.length - 2];
console.log(lengthWay); // 'green'
// Using slice() method. Note an array is returned
const sliceWay = colors.slice(-2, -1);
console.log(sliceWay[0]); // 'green'
// Using at() method
const atWay = colors.at(-2);
console.log(atWay); // 'green'
在非数组对象上调用 at()
at()
方法读取 this
的 length
属性并计算要访问的索引。
js
const arrayLike = {
length: 2,
0: "a",
1: "b",
2: "c", // ignored by at() since length is 2
};
console.log(Array.prototype.at.call(arrayLike, 0)); // "a"
console.log(Array.prototype.at.call(arrayLike, 2)); // undefined
规范
规范 |
---|
ECMAScript 语言规范 # sec-array.prototype.at |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。