昨天研究了函式之後,接下來講講之前沒說到的陣列吧!
陣列也是一種資料型態,它就像一排盒子,裡面依序放著一堆資料,而這些資料可以是字串、數字、物件,甚至其他陣列
JavaScript裡的陣列也有很多好用的方法來幫我們快速處理資料
基本的寫法就是宣告變數之後用[]
來包住資料以,
分隔
範例:
const fruits = ['apple', 'banana', 'cherry'];
console.log(fruits[0]); // apple
console.log(fruits[1]); // banana
console.log(fruits.length); // 3
在呼叫變數的時候[]內包著數字就是呼叫陣列的第幾位的意思,但要記住陣列的第一位是從0開始算,不是1喔!
所以要呼叫陣列的第一位apple
的話就是fruits[0]
呼叫length屬性可以看長度,這邊的陣列放了3個東西,所以會輸出3
陣列可以動態增減內容
範例:
const fruits = ['apple', 'banana'];
// push:加到最後
fruits.push('cherry'); // ['apple','banana','cherry']
// pop:移除最後一個
fruits.pop(); // ['apple','banana']
// unshift:加到最前面
fruits.unshift('mango'); // ['mango','apple','banana']
// shift:移除最前面
fruits.shift(); // ['apple','banana']
陣列也經常搭配迴圈來輸出,for、for...of、forEach這些的寫法,來看看範例
範例:
const fruits = ['apple', 'banana', 'cherry'];
// for
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
// for...of
for (const fruit of fruits) {
console.log(fruit);
}
// forEach
fruits.forEach((fruit, index) => {
console.log(index, fruit);
});
現代JS也有提供給我們一些方法讓我們少寫一些迴圈、更方便地處理陣列,我們直接看看範例
範例:
const numbers = [1, 2, 3, 4, 5];
// map:每個元素轉換成新值
const squared = numbers.map(n => n * n);
console.log(squared); // [1,4,9,16,25]
// filter:過濾符合條件的元素
const evens = numbers.filter(n => n % 2 === 0);
console.log(evens); // [2,4]
// find:找到第一個符合條件的元素
const firstBig = numbers.find(n => n > 3);
console.log(firstBig); // 4
// some:檢查是否有任一元素符合條件
console.log(numbers.some(n => n < 0)); // false
// every:檢查是否所有元素都符合條件
console.log(numbers.every(n => n > 0)); // true
// reduce:累積運算
const sum = numbers.reduce((acc, n) => acc + n, 0);
console.log(sum); // 15
小練習:分數處理
假設有一個儲存學生分數的陣列 [78, 92, 56, 88, 100]
我們來計算
1.每個分數+5 分
2.篩選出大於等於 60 分的
3.計算所有及格分數的平均
const scores = [78, 92, 56, 88, 100];
const plus5 = scores.map(s => s + 5);
const passed = plus5.filter(s => s >= 60);
const average = passed.reduce((acc, s) => acc + s, 0) / passed.length;
console.log('加5分後:', plus5);
console.log('及格分數:', passed);
console.log('及格平均:', average);
大概了解完陣列在做什麼之後再做個小練習就會更熟!
今天就到這裡,明天再見啦