reduce 的其他玩法

紀錄一下,Array.reduce 這個方法能做的事情還蠻多的。

建立物件

1
2
3
4
5
6
7
8
const arr = [1, 2, 3, 4, 5]
const result = arr.reduce((acc, elem) => {
// 先修改 accumulator 的值
acc['A'+elem] = elem
// 修改後在 return 回去
return acc
}, {})
console.log(result) // {A1: 1, A2: 2, A3: 3, A4: 4, A5: 5}

計算小於 n 的總和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
const result = arr.reduce((acc, elem) => {
// 把小於 5 的元素加到 accumulator
if(elem < 5) {
// 先更新值
acc = acc + elem
// 再回傳
return acc
} else {
// 不更新直接回傳
return acc
}
}, 0)
console.log(result) // 10

建立小於 n 陣列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
const result = arr.reduce((acc, elem) => {
// 把小於 5 的元素加到 accumulator
if(elem < 5) {
// 先更新值
acc.push(elem)
// 再回傳
return acc
} else {
// 不更新直接回傳
return acc
}
}, [])
console.log(result) // [1, 2, 3, 4]
利用遞迴來回壓平陣列 mentor-program-day21
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×