# [JS] map/filter/reduce
comment: 你再給我用 GPT 試試看
response:👉🏻👈🏻
# JavaScript 中的 `map`、`filter` 和 `reduce`
在 JavaScript 中,`map`、`filter` 和 `reduce` 是三個非常強大的陣列方法。它們可以幫助我們以簡潔且高效的方式處理和轉換陣列。本文將介紹這三個方法的基本用法和範例。

map會回傳一個陣列
filter可以用來搜尋
reduce就是累加,混在一起
## `map`
`map` 會建立一個新的陣列,其結果是對原陣列中的每個元素呼叫一次提供的函數後返回的結果。
(取得運算後的陣列)
### 語法
```javascript
const newArray = array.map(callback(element[, index[, array]])[, thisArg])
```
### 範例1
```javascript
const numbers = [1, 2, 3, 4];
const doubled = numbers.map(num => num * 2);
console.log(doubled); // [2, 4, 6, 8]
```
### 範例2
```javascript=
let arr = [1, 2, 3]
let newArr = arr.map(function(val, idx, array){
return val * 2 // 建立一個新的陣列,並將 1, 2, 3 分別乘 2 後依序傳入到陣列當中
})
console.log(arr) // [1, 2, 3]
console.log(newArr) // [2, 4, 6]
```
## `filter`
`filter` 會建立一個新的陣列,其包含了所有通過提供的函數實現的測試的原陣列元素。
(篩檢內容)
### 語法
```javascript=
const newArray = array.filter(callback(element[, index[, array]])[, thisArg])
```
### 範例1
```javascript
const numbers = [1, 2, 3, 4];
const evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4]
```
### 範例2
```javascript=
let arr = [1, 2, 3]
let newArr = arr.filter(function(val, index, array){
return val > 1
})
console.log(arr) // [1, 2, 3]
console.log(newArr) // [2, 3]
```
## `reduce`
`reduce` 對陣列中的每個元素執行提供的函數(從左到右),將其結果匯總為單一的返回值。
(依序取出與整理)
### 語法
```javascript
const result = array.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
```
### 範例1
```javascript
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, num) => acc + num, 0);
console.log(sum); // 10
```
### 範例2
```javascript=
let arr = [1, 5, 9]
let sumArrAddTwo = arr.reduce(function(total, val){
return total + val + 10
}, 0) // 這裡的 0 代表累加器初始值為 0,
/* 分解開來就像是
第一次:0 + 1 + 10 = 11
第二次:11 + 5 + 10 = 26
第三次:26 + 9 + 10 = 45
*/
console.log(sumArrAddTwo) // 45
```