Javaวิธีการสคริปต์อาร์เรย์: สร้างด้วยตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

Javaเมธอดอาร์เรย์ในสคริปต์ช่วยให้นักพัฒนาสามารถจัดเก็บ ดึงข้อมูล และแปลงชุดค่าที่มีลำดับผ่านอ็อบเจ็กต์เดียว บทความนี้อธิบายเกี่ยวกับการสร้างอาร์เรย์ การเข้าถึงด้วยดัชนี ตระกูลเมธอดในตัว เทคนิคการวนซ้ำ โครงสร้างหลายมิติ และตัวอย่างที่สามารถทำงานได้พร้อมผลลัพธ์ที่คาดหวัง

  • 📦 แนวคิดหลัก: อาร์เรย์คืออ็อบเจ็กต์ที่เก็บค่าจำนวนมากไว้ภายใต้ชื่อเดียวกัน และแสดงค่าแต่ละค่าผ่านดัชนีที่เริ่มต้นจากศูนย์
  • 🛠️ ไวยากรณ์การสร้าง: Literal notation with square brackets is preferred, while the Array constructor remains available for legacy code.
  • Mutating Methods: คำสั่ง push, pop, shift, unshift และ splice จะเปลี่ยนแปลงอาร์เรย์เดิมและส่งคืนค่าที่ถูกลบออกหรือความยาวใหม่
  • 🔍 วิธีการที่ไม่ก่อให้เกิดการกลายพันธุ์: คำสั่ง slice, concat, join, indexOf และ includes อ่านอาร์เรย์โดยไม่เปลี่ยนแปลงองค์ประกอบที่จัดเก็บไว้
  • 🔁 กลุ่มการวนซ้ำ: forEach, map, filter, reduce และ find ใช้ฟังก์ชัน callback กับทุกองค์ประกอบ และรองรับรูปแบบการเขียนโปรแกรมเชิงฟังก์ชัน
  • ⚠️ ข้อควรระวังในการจัดเรียง: การเรียงลำดับแบบค่าเริ่มต้นจะเปรียบเทียบค่าเป็นสตริง ดังนั้นข้อมูลตัวเลขจึงต้องใช้ฟังก์ชันเปรียบเทียบที่ระบุอย่างชัดเจน
  • 🧱 โครงสร้างแบบซ้อนกัน: การวางอาร์เรย์ซ้อนกันจะสร้างตารางหลายมิติที่ระบุด้วยนิพจน์ดัชนีสองตัว

Javaวิธีการอาร์เรย์สคริปต์

อาร์เรย์คืออะไรใน Javaสคริปต์?

อาร์เรย์เป็นวัตถุที่สามารถจัดเก็บ ของสะสม. Arrays become really useful when you need to store large amounts of data of the same type. Suppose you want to store details of 500 employees. If you are using variables, you will have to create 500 variables, whereas you can do the same with a single array. You can access the items in an array by referring to its หมายเลขดัชนีและดัชนีขององค์ประกอบแรกของอาร์เรย์คือศูนย์

แตกต่างจากอาร์เรย์ในภาษาที่มีการกำหนดประเภทข้อมูลอย่างเคร่งครัด ...แตกต่างจากอาร์เรย์ในภาษาที่มีการกำหนดประเภทข้อมูลอย่างเคร่งครัด ในภาษาที่มีการกำหนดประเภท JavaScript array is dynamic. Its length grows automatically when a new element is assigned, and a single array may hold strings, numbers, booleans, objects, and even other arrays at the same time. This flexibility makes arrays the default container for list data in browser scripts and server-side code alike.

วิธีการสร้างอาร์เรย์ใน Javaต้นฉบับ

คุณสามารถสร้างอาร์เรย์ใน Javaต้นฉบับ ตามที่ระบุด้านล่าง

var students = ["John", "Ann", "Kevin"];

ที่นี่ คุณกำลังเริ่มต้นอาร์เรย์ของคุณตามเวลาและเวลาที่ถูกสร้างขึ้นด้วยค่า “John”, “Ann” และ “Kevin” ดัชนีของ “จอห์น”, “แอน” และ “เควิน” คือ 0, 1 และ 2 ตามลำดับ หากคุณต้องการเพิ่มองค์ประกอบเพิ่มเติมให้กับอาร์เรย์ของนักเรียน คุณสามารถทำได้ดังนี้:

students[3] = "Emma";
students[4] = "Rose";

คุณสามารถสร้างอาร์เรย์โดยใช้ตัวสร้างอาร์เรย์ได้ดังนี้:

var students = new Array("John", "Ann", "Kevin");

OR

var students = new Array();

students[0] = "John";

students[1] = "Ann";

students[2] = "Kevin";

How to Access and Modify Array Elements

องค์ประกอบแต่ละตัวจะอยู่ในตำแหน่งที่มีหมายเลขกำกับ สัญลักษณ์วงเล็บเหลี่ยมใช้สำหรับอ่านค่า กำหนดค่าใหม่ หรือเพิ่มรายการใหม่เมื่อดัชนีเท่ากับความยาวปัจจุบัน

let students = ["John", "Ann", "Kevin"];

console.log(students[0]);              // John  - first element
console.log(students[students.length - 1]); // Kevin - last element

students[1] = "Anna";                // replace an existing value
students[3] = "Emma";                // append a new value

console.log(students);              // ["John", "Anna", "Kevin", "Emma"]
console.log(students.length);       // 4
console.log(students[9]);              // undefined - index does not exist

⚠️คำเตือน: การกำหนดค่าให้กับดัชนีที่อยู่ไกลเกินกว่าความยาวปัจจุบันจะสร้างอาร์เรย์แบบกระจัดกระจายซึ่งเต็มไปด้วยช่องว่าง ควรใช้ push() แทนที่จะใช้ดัชนีแบบกระโดด ทำให้โครงสร้างอาร์เรย์ยังคงหนาแน่นและคาดเดาได้

Javaวิธีการอาร์เรย์สคริปต์

วัตถุ Array มีคุณสมบัติและวิธีการมากมายที่ช่วยให้นักพัฒนาจัดการอาร์เรย์ได้อย่างง่ายดายและมีประสิทธิภาพ คุณสามารถรับค่าของคุณสมบัติได้โดยการระบุ arrayname.property และเอาต์พุตของเมธอดโดยระบุ arrayname.method()

  1. คุณสมบัติความยาว –> หากคุณต้องการทราบจำนวนองค์ประกอบในอาร์เรย์ คุณสามารถใช้คุณสมบัติความยาวได้
  2. คุณสมบัติต้นแบบ –> หากคุณต้องการเพิ่มคุณสมบัติและวิธีการใหม่ คุณสามารถใช้คุณสมบัติต้นแบบได้
  3. วิธีย้อนกลับ -> คุณสามารถกลับลำดับของรายการในอาร์เรย์โดยใช้วิธีย้อนกลับ
  4. วิธีการเรียงลำดับ –> You can sort the items in an array using the sort method.
  5. วิธีป๊อป -> คุณสามารถลบรายการสุดท้ายของอาร์เรย์โดยใช้วิธีป๊อป
  6. วิธีการกะ -> คุณสามารถลบรายการแรกของอาร์เรย์โดยใช้วิธี shift ได้
  7. วิธีการผลักดัน -> คุณสามารถเพิ่มค่าเป็นรายการสุดท้ายของอาร์เรย์ได้

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

วิธี จุดมุ่งหมาย คืนสินค้า การเปลี่ยนแปลงอาร์เรย์ดั้งเดิม
ดัน () เพิ่มรายการอย่างน้อยหนึ่งรายการต่อท้าย ความยาวใหม่ มี (ใบกำกับภาษีเต็มรูปแบบ)
ป๊อป () ลบรายการสุดท้ายออก รายการที่ถูกลบ มี (ใบกำกับภาษีเต็มรูปแบบ)
ยกเลิกการเปลี่ยน () เพิ่มสิ่งของอย่างน้อยหนึ่งชิ้นไว้ด้านหน้า ความยาวใหม่ มี (ใบกำกับภาษีเต็มรูปแบบ)
กะ() Remove the first item รายการที่ถูกลบ มี (ใบกำกับภาษีเต็มรูปแบบ)
ประกบ () เพิ่มหรือลบรายการในตำแหน่งใดก็ได้ Array of removed items มี (ใบกำกับภาษีเต็มรูปแบบ)
เรียงลำดับ () สั่งซื้อสินค้า อาร์เรย์ที่เรียงลำดับแล้ว มี (ใบกำกับภาษีเต็มรูปแบบ)
ย้อนกลับ () สลับลำดับของรายการ อาร์เรย์กลับด้าน มี (ใบกำกับภาษีเต็มรูปแบบ)
ชิ้น () คัดลอกส่วนหนึ่งของอาร์เรย์ อาร์เรย์ใหม่ ไม่
เชื่อม () รวมอาร์เรย์สองชุดขึ้นไปเข้าด้วยกัน อาร์เรย์ใหม่ ไม่
เข้าร่วม () รวมรายการต่างๆ เข้าด้วยกันเป็นสตริง เชือก ไม่
ดัชนีของ() ค้นหาตำแหน่งของค่า ดัชนีหรือ -1 ไม่
รวมถึง() Test whether a value exists จริงหรือเท็จ ไม่

การเพิ่มและการลบองค์ประกอบ

let fruits = ["apple", "banana"];

fruits.push("cherry");      // ["apple", "banana", "cherry"]
fruits.unshift("mango");    // ["mango", "apple", "banana", "cherry"]
fruits.pop();                // ["mango", "apple", "banana"]
fruits.shift();              // ["apple", "banana"]

// splice(startIndex, deleteCount, ...itemsToInsert)
fruits.splice(1, 0, "kiwi"); // ["apple", "kiwi", "banana"]
console.log(fruits);

การค้นหา การคัดลอก และการรวมไฟล์

let colors = ["red", "green", "blue", "green"];

console.log(colors.indexOf("green"));     // 1  - first match only
console.log(colors.lastIndexOf("green")); // 3
console.log(colors.includes("pink"));     // false
console.log(colors.slice(1, 3));         // ["green", "blue"]
console.log(colors.join(" | "));         // red | green | blue | green
console.log(colors.concat(["black"]));   // new array, colors unchanged

วิธีการวนซ้ำ: forEach, map, filter และ reduce

ทันสมัย Javaสคริปต์นี้สนับสนุนการใช้เมธอดที่ขับเคลื่อนด้วยฟังก์ชันเรียกกลับ (callback-driven methods) มากกว่าการวนลูปดัชนีด้วยตนเอง เนื่องจากจุดประสงค์ของการดำเนินการนั้นระบุไว้โดยตรงในชื่อเมธอดแล้ว

const scores = [45, 72, 88, 31, 95];

scores.forEach(s => console.log(s));   // prints each score

const doubled = scores.map(s => s * 2);  // [90, 144, 176, 62, 190]
const passed  = scores.filter(s => s >= 50); // [72, 88, 95]
const total   = scores.reduce((sum, s) => sum + s, 0); // 331
const first   = scores.find(s => s > 80);   // 88

console.log(doubled, passed, total, first);

💡 เคล็ดลับ: ค่าดีฟอลต์ sort() แปลงองค์ประกอบเป็นสตริง ดังนั้น [10, 9, 100].sort() รับคืน [10, 100, 9]. Pass a comparator such as sort((a, b) => a - b) เพื่อเรียงลำดับตัวเลขให้ถูกต้อง

Javaตัวอย่างอาร์เรย์สคริปต์พร้อมซอร์สโค้ด Code

สคริปต์ด้านล่างนี้สร้างอาร์เรย์ของนักเรียน เพิ่มวิธีการแสดงผลแบบกำหนดเองผ่านคุณสมบัติ prototype จากนั้นสาธิตการแสดงความยาว การเรียงลำดับ การกลับลำดับ การลบออก และการเพิ่มเข้าไปตามลำดับ ลองทำด้วยตัวเองดู:

<html>
<head>
	<title>Arrays!!!</title>
	<script type="text/javascript">
		var students = new Array("John", "Ann", "Aaron", "Edwin", "Elizabeth");
		Array.prototype.displayItems=function(){
			for (i=0;i<this.length;i++){
				document.write(this[i] + "<br />");
			}
		}
		document.write("students array<br />");
		students.displayItems();
		document.write("<br />The number of items in students array is " + students.length + "<br />");
		document.write("<br />The SORTED students array<br />");
		students.sort();
		students.displayItems();
		document.write("<br />The REVERSED students array<br />");
		students.reverse();
		students.displayItems();
		document.write("<br />THE students array after REMOVING the LAST item<br />");
		students.pop();
		students.displayItems();
        document.write("<br />THE students array after PUSH<br />");
        students.push("New Stuff");
		students.displayItems();
	</script>
</head>
<body>
</body>
</html>

ผลลัพธ์ที่คาดหวัง:

students array
John
Ann
Aaron
Edwin
Elizabeth

The number of items in students array is 5

The SORTED students array
Aaron
Ann
Edwin
Elizabeth
John

The REVERSED students array
John
Elizabeth
Edwin
Ann
Aaron

THE students array after REMOVING the LAST item
John
Elizabeth
Edwin
Ann

THE students array after PUSH
John
Elizabeth
Edwin
Ann
New Stuff

สังเกตว่าคำสั่ง sort จะจัดเรียง “Aaron” ไว้ก่อน “Ann” เพราะตัวอักษรพิมพ์ใหญ่และพิมพ์เล็กจะถูกเปรียบเทียบโดยใช้รหัสตัวอักษร และสังเกตอีกว่าคำสั่ง pop ได้ลบ “Aaron” ออกจากอาร์เรย์ที่กลับด้านแล้ว ซึ่งยืนยันว่าทั้งคำสั่ง sort และ reverse ได้เปลี่ยนแปลงอาร์เรย์เดิมในตำแหน่งเดิม

How to Loop Through a JavaScript Array

ห้องน้ำสี่ห้องping มีรูปแบบการใช้งานให้เลือกใช้ และแต่ละแบบก็เหมาะกับสถานการณ์ที่แตกต่างกัน ลูป for แบบคลาสสิกช่วยให้ควบคุมดัชนีได้อย่างเต็มที่ for…of อ่านค่าโดยตรง forEach แสดงเจตนาได้อย่างชัดเจน และ for…in ควรสงวนไว้สำหรับคุณสมบัติของอ็อบเจ็กต์

const cities = ["Paris", "Tokyo", "Cairo"];

// 1. Classic for loop - index is available
for (let i = 0; i < cities.length; i++) {
    console.log(i + ": " + cities[i]);
}

// 2. for...of loop - value is available
for (const city of cities) {
    console.log(city);
}

// 3. forEach with index parameter
cities.forEach((city, index) => console.log(index, city));

// 4. entries() when both index and value are needed
for (const [index, city] of cities.entries()) {
    console.log(index, city);
}

บทความที่อธิบายไวยากรณ์ของลูปอย่างละเอียดมากขึ้น รวมถึง while และ do…while สามารถดูได้ในบทความถัดไป วิธีการใช้ลูปใน Javaต้นฉบับ.

อาร์เรย์หลายมิติใน Javaต้นฉบับ

Javaสคริปต์ไม่มีประเภทเมทริกซ์เฉพาะ ตารางกริดเป็นเพียงอาร์เรย์ที่มีองค์ประกอบเป็นอาร์เรย์อีกที และใช้การแสดงดัชนีสองแบบเพื่อเข้าถึงเซลล์เดียว

const matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

console.log(matrix[1][2]); // 6  - row index 1, column index 2

for (const row of matrix) {
    console.log(row.join(" "));
}

// flatten a nested array into a single level
console.log(matrix.flat()); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

Output:

6
1 2 3
4 5 6
7 8 9
[1, 2, 3, 4, 5, 6, 7, 8, 9]

อาร์เรย์ปรากฏอยู่ในสคริปต์แทบทุกรูปแบบ ตั้งแต่การตรวจสอบความถูกต้องของฟอร์มไปจนถึงการแสดงผลข้อมูล ดำเนินการต่อด้วย ในทางปฏิบัติ Javaตัวอย่างโค้ดสคริปต์, ทบทวน Javaสตริงสคริปต์ สำหรับการจัดการข้อความ และอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ ภายในและภายนอก Javaต้นฉบับ to decide where these scripts belong in a page. Developers who want static type checking over array contents can move on to the TypeScript เกี่ยวกับการสอน.

คำถามที่พบบ่อย

อาร์เรย์จัดเก็บรายการเรียงลำดับโดยใช้ดัชนีตัวเลขเป็นตัวอ้างอิง ในขณะที่อ็อบเจ็กต์จัดเก็บคุณสมบัติที่มีชื่อโดยไม่มีลำดับที่แน่นอน อาร์เรย์สืบทอดเมธอดของรายการ เช่น push และ map ซึ่งอ็อบเจ็กต์ธรรมดาไม่มี

Use Array.isArray(value), which returns true only for arrays. The typeof operator is unreliable here because it reports “object” for arrays, dates, and null alike.

ใช้ไวยากรณ์ spread […original] หรือ original.slice() การกำหนดค่าแบบธรรมดาจะคัดลอกเฉพาะการอ้างอิงเท่านั้น ดังนั้นการแก้ไขผ่านตัวแปรใดๆ ก็ตามจะส่งผลต่ออาร์เรย์พื้นฐานเดียวกัน

ค้นหาตำแหน่งด้วย indexOf แล้วส่งค่าไปยัง splice ตัวอย่างเช่น arr.splice(arr.indexOf(“Ann”), 1) หรืออีกวิธีหนึ่ง ฟิลเตอร์จะส่งคืนอาร์เรย์ใหม่ที่ไม่รวมค่าที่ไม่ต้องการ

Arrays hold chat message histories, embedding vectors, and streamed model tokens in the browser. Methods such as map and reduce reshape those collections before they are sent to an API or rendered.

ใช่ และโดยปกติแล้วพวกเขาก็ทำเช่นนั้น อย่างไรก็ตาม ควรตรวจสอบให้แน่ใจว่าวิธีการที่แนะนำนั้นเปลี่ยนแปลงอาร์เรย์ต้นฉบับหรือไม่ เพราะการตัดต่อหรือการเรียงลำดับที่ไม่คาดคิดอาจทำให้สถานะในคอมโพเนนต์ React หรือ Vue เสียหายได้

สรุปโพสต์นี้ด้วย: