---
# System prepended metadata

title: JavaScript-數組大全
tags: [JavaScript, 數組]

---

---
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]
```