โปรแกรมเมอร์ต้องการลดการซ้ำซ้อนในโค้ดของตน ยิ่งคุณทำซ้ำรหัสของคุณมากเท่าไหร่ ก็ยิ่งบำรุงรักษาน้อยลงเท่านั้น และโปรแกรมของคุณก็จะทำงานช้าลง นั่นเป็นเหตุผลว่าทำไม JavaScript จึงมีเมธอดต่างๆ ในการวนซ้ำผ่านชุดข้อมูล
วิธีหนึ่งเหล่านี้เรียกว่า map() กระบวนการ. เมธอดนี้วนซ้ำผ่านอาร์เรย์ที่มีอยู่และดำเนินการฟังก์ชันเฉพาะกับรายการทั้งหมดในอาร์เรย์นั้น
ในคู่มือนี้ เราจะพูดถึงวิธีใช้ JavaScript map() การทำงาน. เราจะพูดถึงสามตัวอย่างทั่วไปของ map() ใช้งานได้จริงเพื่อช่วยให้คุณเริ่มต้นได้
หน้าที่ของแผนที่คืออะไร
JavaScript map() method เรียกฟังก์ชันเฉพาะของแต่ละรายการในอาร์เรย์ ผลลัพธ์ของฟังก์ชันนี้จะถูกย้ายไปยังอาร์เรย์ของตัวเอง
ตัวอย่างเช่น สมมติว่าคุณต้องการคูณทุกรายการในอาร์เรย์ด้วยสอง คุณสามารถทำได้โดยการสร้างฟังก์ชันที่คูณทุกรายการอาร์เรย์ด้วยสอง และย้ายฟังก์ชันนั้นไปที่ map() กระบวนการ.
ไวยากรณ์ของ map() ฟังก์ชันคือ:
const newArray = oldArray.map(function, thisValue);
function เป็นฟังก์ชันเรียกกลับที่จะทำงานบนแต่ละองค์ประกอบในอาร์เรย์ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชัน คุณสามารถอ่านคำแนะนำขั้นสูงสุดของเราเกี่ยวกับฟังก์ชัน JavaScript thisValue เป็นค่าเริ่มต้นที่จะเก็บไว้ใน this ตัวแปรในฟังก์ชัน โดยค่าเริ่มต้น สิ่งนี้ไม่ได้กำหนดไว้
เมธอดของแผนที่จะสร้างอาร์เรย์ใหม่ตามผลลัพธ์ของฟังก์ชันการโทรกลับ
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
map() วิธีการมีประโยชน์หลายอย่าง ที่พบบ่อยที่สุดคือการเรียกใช้ฟังก์ชันในรายการองค์ประกอบอาร์เรย์ ตัวอย่างนี้จะเป็นการคูณตัวเลขทุกตัวในรายการตัวเลข หรือการหาความยาวของแต่ละสตริงในรายการสตริง
คุณยังจะพบฟังก์ชันที่ใช้แสดงรายการในไลบรารี JavaScript เช่น React หรือ Vue.js
การเรียกใช้ฟังก์ชันด้วยแผนที่
map() วิธีช่วยให้คุณทำงานซ้ำ ๆ กับทุกรายการในรายการ ซึ่งทำให้มีประโยชน์ในหลายกรณี
สมมติว่าคุณเป็นเจ้าของร้านคุกกี้ และคุณจะขึ้นราคาคุกกี้แต่ละรายการขึ้น 5% แทนที่จะคำนวณราคาใหม่ทั้งหมดทีละรายการ คุณสามารถใช้ map() กระบวนการ.
นี่คือรหัสที่คุณจะใช้:
const cookiePrices = [1.50, 1.75, 1.60, 2.00, 2.05, 1.45];
const newCookiePrices = cookiePrices.map(cookie => {
var price = cookie * 1.05;
return price.toFixed(2);
});
console.log(newCookiePrices); รหัสของเราส่งคืน:
["1.58", "1.84", "1.68", "2.10", "2.15", "1.52"]
ในตัวอย่างนี้ เราได้เพิ่มราคาของทุกคุกกี้ขึ้น 5% อันดับแรก เราประกาศรายการราคาคุกกี้ในตัวแปร “ราคาคุกกี้” จากนั้น เราใช้ map() เมธอดที่มีฟังก์ชันคำนวณราคาเพิ่มขึ้น 5% สำหรับแต่ละคุกกี้
“คุกกี้ * 1.05” คำนวณเปอร์เซ็นต์การเพิ่มขึ้น จากนั้นเราส่งคืนการเพิ่มขึ้นนั้น ปัดเศษเป็นทศนิยมสองตำแหน่งที่ใกล้ที่สุด สุดท้าย เราพิมพ์อาร์เรย์ใหม่ไปยังคอนโซลโดยใช้ console.log() กระบวนการ.
นอกจากนี้เรายังสามารถย้ายฟังก์ชันของเราไปเป็นฟังก์ชันของตัวเองเพื่อให้โค้ดของเราอ่านง่ายขึ้น:
function calculateIncrease(cookie) {
var price = cookie * 1.05;
return price.toFixed(2);
}
const cookiePrices = [1.50, 1.75, 1.60, 2.00, 2.05, 1.45];
const newCookiePrices = cookiePrices.map(calculateIncrease);
console.log(newCookiePrices); รหัสของเราคืนค่าเดิมจากก่อนหน้านี้ แต่อ่านง่ายกว่า:
["1.58", "1.84", "1.68", "2.10", "2.15", "1.52"]
เปลี่ยนรายการในอาร์เรย์
map() วิธีมักใช้เพื่อเปลี่ยนรายการในอาร์เรย์ สมมติว่าร้านคุกกี้ของเรากำลังสร้างโปรแกรมความภักดีสำหรับลูกค้า ทุกคุกกี้ที่คุณซื้อจะได้รับ 10 คะแนน และหากคุณได้รับ 100 คะแนน คุณจะได้รับคุกกี้ฟรี
โปรแกรมต่อไปนี้จะช่วยให้เราทำงานนี้ได้สำเร็จ:
var customers = [
{ name: "Hannah Geoffrey", cookiesPurchased: 2 },
{ name: "Peter Clarkson", cookiesPurchased: 3 },
{ name: "Steven Hanson", cookiesPurchased: 7 }
]
function calculateLoyaltyPoints(customer) {
var newCustomer = {
name: customer.name,
cookiesPurchased: customer.cookiesPurchased,
points: customer.cookiesPurchased * 10
}
return newCustomer;
}
var customersWithPoints = customers.map(calculateLoyaltyPoints);
console.log(customersWithPoints); รหัสของเราส่งคืน:
[{ cookiesPurchased: 2, name: "Hannah Geoffrey", points: 20 }, { cookiesPurchased: 3, name: "Peter Clarkson", points: 30 }, { cookiesPurchased: 7, name: "Steven Hanson", points: 70 }]
ในตัวอย่างนี้ เราได้คำนวณจำนวนคะแนนทั้งหมดที่ลูกค้าแต่ละรายควรได้รับตามจำนวนคุกกี้ที่พวกเขาซื้อ
ขั้นแรก เราประกาศอาร์เรย์ของอ็อบเจ็กต์ที่เรียกว่า "ลูกค้า" รายการนี้เก็บชื่อลูกค้าของเราและจำนวนคุกกี้ที่พวกเขาซื้อโดยใช้คู่คีย์:ค่า
จากนั้น เราประกาศฟังก์ชันชื่อ calculateLoyaltyPoints() . ฟังก์ชันนี้จะเพิ่มรายการใหม่ให้กับสินค้าของลูกค้าแต่ละรายที่เรียกว่า "คะแนน" ซึ่งคำนวณโดยการคูณจำนวนคุกกี้ที่ลูกค้าแต่ละรายซื้อด้วย 10
เราใช้ map() วิธีการทำซ้ำผ่านรายชื่อลูกค้าของเราและใช้ calculateLoyaltyPoints() การทำงาน. สุดท้าย เราพิมพ์รายชื่อลูกค้าที่แก้ไขแล้ว รายการนี้สะท้อนมูลค่า "คะแนน" ที่เราเพิ่มเข้าไปในรายการของลูกค้าแต่ละราย
แสดงรายการโดยใช้ไลบรารี
map() เมธอดมักใช้ในไลบรารี JavaScript เช่น React จุดประสงค์ของวิธีนี้คือการแสดงรายการในรายการ มาดูตัวอย่าง map() . กัน ในปฏิกิริยา
สมมติว่าเราต้องการแสดงรายการคุกกี้ที่ร้านค้าของเราขายบนเว็บไซต์ของเรา เราสามารถทำได้โดยใช้รหัสนี้:
import React from "react";
import ReactDOM from "react-dom";
var cookies = ["Raspberry Chocolate Chip", "White Chocolate Chip", "Oat", "Milk Chocolate Chip"];
const CookieList = () => (
<div>
<ul>{cookies.map((cookie, i) =>
<li key={i}>{cookie}</li>
)}
</ul>
</div>
);
const root = document.getElementById("root");
ReactDOM.render(<CookieList />, root); รหัสนี้สร้างส่วนประกอบใน React ซึ่งแสดงรายการ แต่ละรายการอยู่ภายในแท็ก
map() . map() สร้างแท็ก แผนที่เทียบกับวิธีการ Iterator
แผนที่เป็นตัวอย่างของวิธีการวนซ้ำใน JavaScript วิธีการเหล่านี้ทำให้คุณสามารถวนซ้ำรายการทั้งหมดในรายการและดำเนินการบางอย่างได้
เมื่อคุณกำลังตัดสินใจใช้ map() เป็นแนวปฏิบัติที่ดีที่จะถามก่อนว่าวิธีการ iterator อื่นจะดีกว่าหรือไม่ เพื่อให้แน่ใจว่าคุณได้เลือกเครื่องมือที่เหมาะสมกับงาน
นี่คือวิธีการ iterator อื่น ๆ ที่มีอยู่ใน JavaScript:
- ลด() :วิธีการลดช่วยให้คุณลดอาร์เรย์เป็นค่าเดียว วิธีนี้เหมาะที่สุดหากคุณต้องการทำบางอย่าง เช่น การเพิ่มรายการทั้งหมดในอาร์เรย์
- ตัวกรอง () :ตัวกรองช่วยให้คุณสามารถลบรายการออกจากรายการที่ไม่ตรงตามเกณฑ์เฉพาะ
- forEach() :forEach() เรียกใช้ฟังก์ชันกับทุกรายการในรายการ forEach() คล้ายกับ for loop เนื่องจากช่วยให้คุณสามารถวนรอบอาร์เรย์และทำงานบนแต่ละรายการได้
คุณอาจกำลังคิดกับตัวเองว่า “แผนที่ฟังดูคล้ายกับ forEach() . จริงๆ กระบวนการ. พวกเขาเหมือนกันหรือเปล่า” นั่นเป็นคำถามที่ดี มีความแตกต่างเล็กน้อยระหว่างสองวิธีนี้
map() ฟังก์ชันวนซ้ำรายการ เปลี่ยนแต่ละรายการในรายการ และส่งคืนรายการใหม่ forEach() ในทางกลับกัน ฟังก์ชันจะวนซ้ำเหนือรายการและนำการดำเนินการบางอย่างไปใช้กับรายการในลักษณะที่เป็นผลข้างเคียง
map() ควรใช้ฟังก์ชันที่ดีที่สุดหากคุณต้องการเรียกใช้ฟังก์ชันกับทุกรายการในรายการ ประกาศองค์ประกอบรายการในกรอบงาน เช่น React หรือเปลี่ยนเนื้อหาของรายการ
บทสรุป
map() วิธีนี้มีประโยชน์สำหรับการทำงานซ้ำๆ หลายครั้ง นอกจากนี้ยังมีประโยชน์สำหรับการประกาศส่วนประกอบใน React เช่นรายการ
ในบทช่วยสอนนี้ เราวิเคราะห์การใช้งานหลักสามประการของ map() กระบวนการ. ตอนนี้คุณพร้อมที่จะเริ่มใช้ JavaScript map() วิธีการอย่างนักพัฒนาผู้เชี่ยวชาญ!