上一篇談的是一些較簡單的陣列內建方法,這邊來談複雜一點點的。
array.map()
// 語法 from MDN
let newArr = arr.map(function callbackFn( currentValue[, index[, array]]) {
// return element for new_array
}[, thisArg])
參數說明
回傳值:為 callbackFn 運算結果所集合成的新陣列。
來個練習吧!
// 問題 from GPT
// 求每個名字的長度,用陣列表示
const names = ["Alice", "Bob", "Charlie", "David"];
let length = names.map(function (name) {
// 我本來寫這樣
// let len = name.length;
// return len;
return name.length; // GPT 建議這樣,可以少寫點XD
});
console.log(length); // 5, 3, 7, 5
array.filter()
let newArr = arr.filter(callback(element[, index[, array]])[, thisArg])
參數說明
回傳值:為通過 callback 計算的結果們所集合成的新陣列。
來個練習吧!
// 問題 from GPT
// 找出年紀大於等於 18 者。以陣列表示
const ages = [15, 22, 18, 30, 16, 25];
let over18 = ages.filter(function (age) {
return age >= 18;
});
console.log(over18); // 22, 18, 30, 25
// 語法
arr.reduce(callback[accumulator, currentValue, currentIndex, array], initialValue)
callback:處理 arr 中每個元素的函式。可傳入四個參數如下
initialValue:於第一次呼叫 callback 時,給 accumulator 的初始值。建議給予
來個練習吧!
// 問題 from GPT
// 計算陣列中的數字總和
const numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce(function (
accumulator,
currentValue,
currentIndex,
array
) {
return accumulator + currentValue;
},
0);
console.log(sum); // 15
// 語法
let new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
來個練習吧!
// 問題 from Bard; GPT 暫時上不去QQ
// 串聯這兩個陣列
const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
let newArr = array1.concat(array2);
console.log(newArr); // 1, 2, 3, 4, 5, 6
array.find()
// 語法
arr.find(callback[, thisArg])
參數說明
callback:對 arr 執行迭代檢查的函式。可接受三個參數如下
thisArg:執行 callback 時的 this 值。
回傳值:第一個使 callback 檢查為 ture 的元素。
來個練習吧!
// 問題 from Bard; GPT 暫時上不去QQ
// 找到陣列中的第一個偶數元素
const arr = [1, 2, 3, 4, 5, 6];
let ans = arr.find(function (item) {
return item % 2 === 0;
});
console.log(ans); // 2
// 找到陣列中的第一個不為空的字符串
const arr = ["", "Hello", "World"];
let ans = arr.find(function (item) {
return item != "";
});
console.log(ans); // Hello
array.findindex()
// 語法
arr.findIndex(callback[, thisArg])
參數說明
callback:對 arr 執行迭代檢查的函式。可接受三個參數如下
thisArg:執行 callback 時的 this 值。
回傳值:第一個使 callback 檢查為 ture 的元素的 index。
來個練習吧!
// 問題 from Bard; GPT 暫時上不去QQ
// 找到陣列中第一個偶數元素的索引
const arr = [1, 2, 3, 4, 5, 6];
let index = arr.findIndex(function (item) {
return item % 2 === 0;
});
console.log(index); // 1
提醒:只要是 callback 檢查結果為 true/false,再回傳所篩出元素值的原生方法們,檢查的函式內容須注意邏輯,檢查 return 的結果只會有 true/false。
參考資料