生活化理解
假設今天有一箱水果
let ary =[🍎,🍌,🍇,🍊]
你想把每一個水果包裝起來。
結果變成
[📦🍎,📦🍌,📦🍇,📦🍊]
這就是 map 的概念
1.每個數字乘2
let numbers = [1, 2, 3, 4, 5];
let result = numbers.map(function(num) {
return num * 2;
});
console.log(numbers);//[1, 2, 3, 4, 5] 原本的不變
console.log(result); //[2, 4, 6, 8, 10]
2.字串加工
let names = ["小明","小美","阿華"];
let result = names.map(function(name) {
return "您好 " + name;
});
console.log(result);// ['您好 小明', '您好 小美', '您好 阿華']
3.平方
let numbers = [2,4,6,8];
let result = numbers.map(function(num) {
return num ** 2;
});
console.log(result); // [4, 16, 36, 64]
4.把數字變文字
let scores = [70,80,90];
let result = scores.map(function(score) {
return "分數:" + score;
});
console.log(result); // ['分數:70', '分數:80', '分數:90']
5.物件(Object)最常使用
let students = [
{ name:"小明", score:80 },{ name:"小美", score:95 },{ name:"阿華", score:60 }
];
let names = students.map(function(student) {
return student.name; //只取名字
});
console.log(names); // ['小明', '小美', '阿華']
或者再加些東西
let result = students.map(function(student) {
return {
name: student.name,
pass: student.score >= 60
};
});
console.log(result);
//0:{name: '小明', pass: true}
//1:{name: '小美', pass: true}
//2:{name: '阿華', pass: true}
6.map 有三個參數
array.map(function(item,index,array){
})
| 參數 | 涵義 |
|---|---|
| item | 目前正在處理的元素 |
| index | 目前元素的位置(索引) |
| array | 原本的整個陣列 |
map 與 forEach 的差異
| 比較項目 | map() | forEach() |
|---|---|---|
| 是否回傳新陣列 | ✅ 會 | ❌ 不會(回傳 undefined) |
| 是否需要 return | ✅ 需要 | ❌ 不需要 |
| 適合用途 | 資料轉換、加工 | 執行操作、印出、修改外部變數 |
| 可串接其他方法 | ✅ 可以 | ❌ 不適合 |
map常見情境:
當你未來學到 filter()(篩選資料)、reduce()(彙總資料)後,會發現它們經常和 map() 搭配使用,是 JavaScript 處理陣列最核心的三個方法之一。