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