---
tags: JavaScript,數組
---
# 基礎語法
```javascript=
let array = ['A', 'B', 'C'];
console.log(array[0]); // A
console.log(array.length); // 3
```
# 修改原數組7方法
push
pop
shift
unshift
splice
sort
reverse
# index系列
```javascript=
let array = ['A', 'B', 'C'];
console.log(array.indexOf('A')); // 0
console.log(array.indexOf('D')); // -1
```
這種的一定要放函數
```javascript=
let array = ['A', 'B', 'C'];
console.log(array.findIndex((e) => e === 'A')); // 0
console.log(array.findIndex((e) => e === 'B')); // 1
console.log(array.findIndex((e) => e === 'C')); // 2
console.log(array.findIndex((e) => e === 'D')); // -1
let array1 = [1, 2, 3];
console.log(array1.findIndex((e) => e > 1)); // 1(只返回符合條件的第一個元素索引號)
console.log(array1.findIndex((e) => e > 2)); // 2(只返回符合條件的第一個元素索引號)
console.log(array1.findIndex((e) => e > 3)); // -1
```
# 合併
```javascript=
let array1 = [1, 2, 3];
let array2 = [4, 5];
console.log(array1.concat(array2)); // [1, 2, 3, 4, 5]
```
# 反轉
```javascript=
let array1 = [1, 2, 3];
console.log(array1.reverse()); // [3, 2, 1]
```
# 是否包含
```javascript=
let array1 = [1, 2, 3];
console.log(array1.includes(4)); // false
console.log(array1.includes(1)); // true
```
# 增加系列
往後增加
```javascript=
let array1 = [1, 2, 3];
array1.push(4, 5);
console.log(array1); // [1, 2, 3, 4, 5]
```
往前增加
```javascript=
let array1 = [1, 2, 3];
array1.unshift(4, 5);
console.log(array1); // [4, 5, 1, 2, 3]
```
# 移除系列
移除最後
```javascript=
let array1 = [1, 2, 3];
console.log(array1.pop()); // 3 (返回被刪掉的那個元素)
console.log(array1); // [1, 2]
```
移除最前
```javascript=
let array1 = [1, 2, 3];
console.log(array1.shift()); // 1 (返回被刪掉的那個元素)
console.log(array1); // [2, 3]
```
# 刪、增、改
注意:直接修改原數組
array.splice(start, deleteCount, item1, item2, ...)
start:開始索引位置,可改用負數
deleteCount:刪除元素數量,可填0不刪除
item1, item2, ...:要插入到數組中的新元素
...
array.splice()本身返回被刪除的元素,型態一定是數組
## 刪
```javascript=
const array = ['one', 'two', 'three', 'four'];
const removed = array.splice(1, 2);
console.log(array); // ["one", "four"]
console.log(removed); // ["two", "three"]
```
## 增
```javascript=
const array = ['one', 'two', 'three', 'four'];
const removed = array.splice(2, 0,'安','安安');
console.log(array); // ['one', 'two', '安', '安安', 'three', 'four']
```
## 改
```javascript=
const array = ['one', 'two', 'three', 'four'];
const removed = array.splice(1, 2,'二','三');
console.log(array); // ['one', '二', '三', 'four']
```
# 累加
array.reduce(callback[, initialValue])
callback为回调函数,initialValue为可选的初始值。
累积器(accumulator):存储累积结果的变量。
当前值(currentValue):当前正在处理的数组元素。
```javascript=
let array3 = [1, 2, 3, 4, 5];
const sum = array3.reduce((accumulator, currentValue) => {
return accumulator + currentValue;
}, 0);
console.log(sum); // 0+1+2+3+4+5=15
const sum1 = array3.reduce((accumulator, currentValue) => {
return accumulator + currentValue;
}, 10);
console.log(sum1); // 10+1+2+3+4+5=25
```
# forEach
```javascript=
let array1 = [1, 2, 3];
array1.forEach(function (element, index, array) {
console.log(element);
console.log(index);
console.log(array);
});
// 1
// 0
// [1, 2, 3]
// 2
// 1
// [1, 2, 3]
// 3
// 2
// [1, 2, 3]
```
# every
array.every(callback[, thisArg])
callback: 是一个用来测试数组中每个元素的函数。它接收三个参数:
currentValue: 当前正在被处理的元素。
index(可选):当前元素在数组中的索引。
array(可选):调用every的数组本身。
thisArg(可选):在执行callback函数时使用的上下文对象(即this的值)。
```javascript=
const numbers = [2, 4, 6, 8, 10];
// 检查数组中的每个元素是否都是偶数
const allEven = numbers.every((num) => num % 2 === 0);
console.log(allEven); // 输出 true,因为所有元素都是偶数
```
# map
會返回新數組
array.map(callback(element, index, array), thisArg)
```javascript=
let array1 = [1, 2, 3];
let doubledNumbers = array1.map(function (element, index, array) {
console.log(element);
console.log(index);
console.log(array);
return element * 2;
});
console.log(doubledNumbers);
// 1
// 0
// [1, 2, 3]
// 2
// 1
// [1, 2, 3]
// 3
// 2
// [1, 2, 3]
// 最後結果
// [2, 4, 6]
```
```javascript=
let array1 = [1, 2, 3]
let array2 = array1.map((x) => x * 2);
console.log(array2); // [2, 4, 6]
```
```javascript=
var person = {
name: 'John',
age: 30,
calculateBirthYear: function(yearsAgo) {
return new Date().getFullYear() - this.age - yearsAgo;
}
};
var yearsAgo = [10, 20, 30];
var birthYears = yearsAgo.map(function(years) {
return this.calculateBirthYear(years);
}, person);
console.log(birthYears); // 输出: [1991, 1981, 1971]
```