iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0

陣列常用方法

.map

將陣列內的每個元素,皆傳入並執行一次
類似 forEach(),但 map() 會產生一個新陣列

  1. 將陣列中的元素變成兩倍
const list = [1,2,3,4]

const result = list.map(function(val) {
  return val*2
})

console.log(result)
  1. 兩倍的功能抽成 function
const list = [1,2,3,4]

const double = (i) => i*2
const result = list.map(double)

console.log(result)  // [2,4,6,8]

.filter

將陣列元素傳入函式做過濾
第一個參數是目前被處理中的元素,第二個參數是被處理中的元素之索引,第三個參數是呼叫 filter() 的陣列

  1. 取奇數
const list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
const result = list.filter(function (val, idx, arr) {
  return val % 2 == 1
})

console.log(result)  // [1,3,5,7,9]

.reduce

陣列數字加總
第一個參數是目前陣列元素累加的總數,第二個參數是目前被處理的元素

  1. 取陣列的合
const list = [1,2,3,4,5]

const result = list.reduce(function(sum, value) {
  return sum += value
}, 0) // 起始值, 無起始值的話第一輪的 sum 預設為陣列中的第一個元素 value 為第二個元素

console.log(result)  // 55
  1. 用 .reduce 取出陣列中的最大值
const list = [1,9,10,3,5]

const result = list.reduce(function(value1, value2) {
  if (value1 > value2) return value1
  return value2
})

console.log(result) // 10

練習題

  1. 排序 數字由小到大
const list = [1, 9, 10, 3, 5];

const result = list.sort(function (value1, value2) {
  if (value1 > value2) {
    return 1;
  }
  return -1;
});
console.log(result);

  1. 求所有奇數的平方和
const list = [1,2,3,4,5,6,7,8,9,10]

const result = list.reduce(function(acc, cv) {
  if (cv % 2 !== 0 ) {
    return acc+ cv**2
  } 
  return acc
})
console.log(result)

老師解法:

const list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
const odd = (n) =>  {return n % 2 == 1}
const square = (n) => n * n
const sum = (acc, cv) => acc + cv

const result = list
  .filter(odd) // 奇數
  .map(square) // 平方
  .reduce(sum) // 和

console.log(result)

上一篇
Day 8 - JavaScript 陣列
下一篇
Day 10 - JavaScript:箭頭函數
系列文
從零開始 - 30 天學習筆記12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言