Array.prototype.at()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2022å¹´3æ.
at() 㯠Array ã¤ã³ã¹ã¿ã³ã¹ã®ã¡ã½ããã§ãæ´æ°å¤ãåãåãããã®ã¤ã³ããã¯ã¹ã«ããé
ç®ãè¿ãã¾ããæ£ã®æ´æ°å¤ã¨è² ã®æ´æ°å¤ã使ç¨ã§ãã¾ããè² ã®æ´æ°ã¯ãé
åã®æå¾ã®é
ç®ããåã¸æ°ãã¾ãã
試ãã¦ã¿ã¾ããã
const array = [5, 12, 8, 130, 44];
let index = 2;
console.log(`${index} ã®ã¤ã³ããã¯ã¹ã¯ ${array.at(index)} ãè¿ãã¾ã`);
// äºæ³ãããçµæ: "2 ã®ã¤ã³ããã¯ã¹ã¯ 8 ãè¿ãã¾ã"
index = -2;
console.log(`${index} ã®ã¤ã³ããã¯ã¹ã¯ ${array.at(index)} ãè¿ãã¾ã`);
// äºæ³ãããçµæ: "-2 ã®ã¤ã³ããã¯ã¹ã¯ 130 ãè¿ãã¾ã"
æ§æ
at(index)
弿°
index-
è¿ãããé åè¦ç´ ã®ã¼ãåºç¹ã®ã¤ã³ããã¯ã¹ã§ãæ´æ°ã«å¤æããã¾ããè² ã®æ·»åã使ç¨ããå ´åã¯ãé åã®æ«å°¾ããéã«æ°ããã¤ã³ããã¯ã¹ã§ãã
index < 0ã§ããã°ãindex + array.lengthãã¢ã¯ã»ã¹ããã¾ãã
è¿å¤
é
åã®ä¸ã§æå®ãããã¤ã³ããã¯ã¹ã«ä¸è´ããè¦ç´ ã§ããindex < -array.length ã¾ã㯠index >= array.length ã®å ´åã¯ã対å¿ããããããã£ã«ã¢ã¯ã»ã¹ãããã¨ããã常㫠undefined ãè¿ãã¾ãã
解説
at() ã¡ã½ããã¯ãindex ãè² ã®æ´æ°ã§ãªãå ´åããã©ã±ããè¨æ³ã¨ç価ã§ããä¾ãã°ã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 ããããã£ã¨æ´æ°ãã¼ã®ããããã£ããããã¨ã ããæå¾
ãã¾ãã
ä¾
>é åã®æ«å°¾ã®å¤ãè¿ã
以ä¸ã®ä¾ã¯ãæå®ãããé åã®ä¸ã§æå¾ã«è¦ã¤ãã£ãè¦ç´ ãè¿ã颿°ãæä¾ãã¾ãã
// é
ç®ä»ãã®é
å
const cart = ["ããã", "ããã", "ãªã"];
// æå®ãããé
åã®æå¾ã®é
ç®ãè¿ã颿°
function returnLast(arr) {
return arr.at(-1);
}
// é
å 'cart' ã®æå¾ã®é
⽬ãåå¾ãã
const item1 = returnLast(cart);
console.log(item1); // 'ãªã'
// é
å 'cart' ã«ååã追å
cart.push("ã¿ãã");
const item2 = returnLast(cart);
console.log(item2); // 'ã¿ãã'
ã¡ã½ããã®æ¯è¼
ãã®ä¾ã§ã¯ã Array ã®æå¾ãã 1 ã¤ç®ã®é
ç®ã鏿ãããã¾ãã¾ãªæ¹æ³ãæ¯è¼ãã¦ãã¾ãã以ä¸ã«ç¤ºãã©ã®æ¹æ³ãæå¹ã§ãããat() ã¡ã½ããã®ç°¡æ½ãã¨èªã¿ããããéç«ã£ã¦ãã¾ãã
// é
ç®ä»ãã®é
å
const colors = ["red", "green", "blue"];
// length ããããã£ã®ä½¿ç¨
const lengthWay = colors[colors.length - 2];
console.log(lengthWay); // 'green'
// slice() ã¡ã½ããã使ç¨ãé
åãè¿ããã¨ã«æ³¨æã
const sliceWay = colors.slice(-2, -1);
console.log(sliceWay[0]); // 'green'
// at() ã¡ã½ããã使ç¨
const atWay = colors.at(-2);
console.log(atWay); // 'green'
é å以å¤ã®ãªãã¸ã§ã¯ãã§ã® at() ã®å¼ã³åºã
at() ã¡ã½ããã¯ãthis ã® length ããããã£ãèªã¿è¾¼ãã§ãã¢ã¯ã»ã¹ããæ·»åãè¨ç®ãã¾ãã
const arrayLike = {
length: 2,
0: "a",
1: "b",
2: "c", // length ã 2 ãªã®ã§ at() ããã¯ç¡è¦ããã
};
console.log(Array.prototype.at.call(arrayLike, 0)); // "a"
console.log(Array.prototype.at.call(arrayLike, 2)); // undefined
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.at> |