Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

Map JavaScript:คำแนะนำเกี่ยวกับเมธอด .map()

โปรแกรมเมอร์ต้องการลดการซ้ำซ้อนในโค้ดของตน ยิ่งคุณทำซ้ำรหัสของคุณมากเท่าไหร่ ก็ยิ่งบำรุงรักษาน้อยลงเท่านั้น และโปรแกรมของคุณก็จะทำงานช้าลง นั่นเป็นเหตุผลว่าทำไม 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() สร้างแท็ก
  • แต่ละรายการสำหรับแต่ละรายการในรายการ และตัวแปร "i" จะกำหนดคีย์เฉพาะสำหรับรายการแต่ละรายการ

    แผนที่เทียบกับวิธีการ Iterator

    แผนที่เป็นตัวอย่างของวิธีการวนซ้ำใน JavaScript วิธีการเหล่านี้ทำให้คุณสามารถวนซ้ำรายการทั้งหมดในรายการและดำเนินการบางอย่างได้

    เมื่อคุณกำลังตัดสินใจใช้ map() เป็นแนวปฏิบัติที่ดีที่จะถามก่อนว่าวิธีการ iterator อื่นจะดีกว่าหรือไม่ เพื่อให้แน่ใจว่าคุณได้เลือกเครื่องมือที่เหมาะสมกับงาน

    นี่คือวิธีการ iterator อื่น ๆ ที่มีอยู่ใน JavaScript:

    • ลด() :วิธีการลดช่วยให้คุณลดอาร์เรย์เป็นค่าเดียว วิธีนี้เหมาะที่สุดหากคุณต้องการทำบางอย่าง เช่น การเพิ่มรายการทั้งหมดในอาร์เรย์
    • ตัวกรอง () :ตัวกรองช่วยให้คุณสามารถลบรายการออกจากรายการที่ไม่ตรงตามเกณฑ์เฉพาะ
    • forEach() :forEach() เรียกใช้ฟังก์ชันกับทุกรายการในรายการ forEach() คล้ายกับ for loop เนื่องจากช่วยให้คุณสามารถวนรอบอาร์เรย์และทำงานบนแต่ละรายการได้

    คุณอาจกำลังคิดกับตัวเองว่า “แผนที่ฟังดูคล้ายกับ forEach() . จริงๆ กระบวนการ. พวกเขาเหมือนกันหรือเปล่า” นั่นเป็นคำถามที่ดี มีความแตกต่างเล็กน้อยระหว่างสองวิธีนี้

    map() ฟังก์ชันวนซ้ำรายการ เปลี่ยนแต่ละรายการในรายการ และส่งคืนรายการใหม่ forEach() ในทางกลับกัน ฟังก์ชันจะวนซ้ำเหนือรายการและนำการดำเนินการบางอย่างไปใช้กับรายการในลักษณะที่เป็นผลข้างเคียง

    map() ควรใช้ฟังก์ชันที่ดีที่สุดหากคุณต้องการเรียกใช้ฟังก์ชันกับทุกรายการในรายการ ประกาศองค์ประกอบรายการในกรอบงาน เช่น React หรือเปลี่ยนเนื้อหาของรายการ



    บทสรุป

    map() วิธีนี้มีประโยชน์สำหรับการทำงานซ้ำๆ หลายครั้ง นอกจากนี้ยังมีประโยชน์สำหรับการประกาศส่วนประกอบใน React เช่นรายการ

    ในบทช่วยสอนนี้ เราวิเคราะห์การใช้งานหลักสามประการของ map() กระบวนการ. ตอนนี้คุณพร้อมที่จะเริ่มใช้ JavaScript map() วิธีการอย่างนักพัฒนาผู้เชี่ยวชาญ!