iT邦幫忙

0

[JavaScript學習筆記] - 陣列(進階)

  • 分享至 

  • xImage
  •  

同學們的考試分數

const students = [
  { name: "小明", score: 85 },
  { name: "小華", score: 40 },
  { name: "小美", score: 92 },
  { name: "阿強", score: 55 },
];

forEach — 每個都看過一遍,做點事(不回傳新陣列)

students.forEach(function (s) {
  console.log(s.name + "的分數是" + s.score);
});

//輸出 小明的分數是85
//輸出 小華的分數是40
//輸出 小美的分數是92
//輸出 阿強的分數是55

map — 每個都轉換成新的東西(回傳一樣長度的新陣列)

const names = students.map(function (s) {
  return s.name;
});
console.log(names); 
// 輸出 ["小明", "小華", "小美", "阿強"]

filter — 篩選條件 ,把符合的留下來(回傳新陣列,長度可能變短)

const passed = students.filter(function (s) {
  return s.score >= 60; //分數大於等於60 ,就回傳值
});
console.log(passed);
// 輸出 [{name:"小明", score:85}, {name:"小美", score:92}]

find — 找出第一個符合條件的人(只回傳一個,不是陣列)

const topStudent = students.find(function (s) {
  return s.score > 90;
});
console.log(topStudent); 
// 輸出 {name:"小美", score:92}

some — 問「至少有一個人符合嗎?」(回傳 true/false)

const hasFailed = students.some(function (s) {
  return s.score < 60;
});
console.log(hasFailed); 
//輸出 true

every — 問「全部人都符合嗎?」(回傳 true/false)

const allPassed = students.every(function (s) {
  return s.score >= 60;
});
console.log(allPassed); 
//輸出 false

reduce — 把整群人壓縮成一個結果(例如總分)

const totalScore = students.reduce(function (sum, s) {
  return sum + s.score;
}, 0);
console.log(totalScore); 
//輸出 272

關於reduce的用法
reduce 可以想成「把一整排東西捲成一個結果」的工具,像把很多顆糖果丟進一個袋子最後秤總重一樣

整體來說,reduce 最常出現在一串「鏈式呼叫」(method chaining) 的最後一棒,前面通常是 filter(篩選)跟 map(轉換),負責「整理資料」,reduce 負責「收尾、算出最終的一個結果」


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言