# .at()
[MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/at) | [codepen](https://codepen.io/kentyangfake/pen/xxaZzez)
主要是用來處理倒數,`arr.at(-1)`
#### 跟arr[-1]的差別
因為JS的arr也是object,`arr[-1]`會return undefined, '-1'會被處理成string,所以可以想成arr.'-1'會取出一個沒指定的值
* `[ ]` 是一種運算子(operator), 程式會計算出這個索引對應的位置,然後將該位置的元素回傳給你。如果索引值超出了陣列的範圍,程式會拋出一個例外(undefined)
* 一般使用`arr[arr.length-1]`取值
```
arr.at(-1) === arr[arr.length-1] === arr.slice(-2, -1)
```
#### 處理array-like
```
let arr = {
0: 'a',
1: 'b',
length: 2
}
```
* string
* 與 DOM 元素相關的 JavaScript 程式中:
Nodelist: document.querySelectorAll('')回傳的東西,不適用部分array method,要先用Array.from()轉成陣列
```
let category = document.querySelectorAll('.category');
Array.from(category).at(-1);
```
#### 應用
```
const users = ["amy","benson","cathy"];
let currentNum = 0;
let prevNum;
setInterval(() => {
currentNum = (currentNum + 1) % users.length;
showPrevUser();
}, 3000);
function showPrevUser() {
prevNum = currentNum - 1;
let user = users.at(prevNum);
console.log(`current: ${currentNum}, prev: ${prevNum} user: ${user}`);
}
```
## Styled component
[Docs](https://styled-components.com/docs) | [Basic](https://codepen.io/kentyangfake/pen/QWVyVLr) | [ThemeProvider](https://codepen.io/kentyangfake/pen/abademo?editors=0010)
## Figma Jam
[首頁架構圖](https://www.figma.com/file/0dvdwoQF3hERLCXKJlz8H2/%E9%A6%96%E9%A0%81%E6%9E%B6%E6%A7%8B?t=Gua58HTt2LbSTtlS-0)