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

การจัดเรียงองค์ประกอบอาร์เรย์ใน Javascript


JavaScript มีฟังก์ชันในตัวที่ทรงพลังมากในการจัดเรียงอาร์เรย์ โดยค่าเริ่มต้น วิธีการเรียงลำดับจะเรียงลำดับองค์ประกอบตามตัวอักษร ตัวอย่างเช่น

ตัวอย่าง

let arr1 = ["Zebra", "Bear", "Tiger"];
arr1.sort();
console.log(arr1);

ผลลัพธ์

สิ่งนี้จะให้ผลลัพธ์ -

[ 'Bear', 'Tiger', 'Zebra' ]

ทีนี้มาดูตัวอย่าง int กัน

ตัวอย่าง

let arr1 = [1, 8, 31, 21];
arr1.sort();
console.log(arr1);

ผลลัพธ์

สิ่งนี้จะให้ผลลัพธ์ -

[ 1, 21, 31, 8 ]

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

ตัวอย่าง

let arr1 = [1, 8, 31, 21];
arr1.sort((a, b) => a - b);
console.log(arr1);

ผลลัพธ์

สิ่งนี้จะให้ผลลัพธ์ &,ลบ;

[ 1, 8, 21, 31 ]

นอกจากนี้ยังสามารถใช้เพื่อให้คีย์ที่ควรใช้ในการเรียงลำดับในกรณีที่ซับซ้อนมากขึ้น เช่น การเรียงลำดับอาร์เรย์อ็อบเจ็กต์ ตัวอย่างเช่น

ตัวอย่าง

let people = [{
   name: "Zoe",
   age: 35
}, {
   name: "Richard",
   age: 21
}, {
   name: "Agnes",
   age: 25
}];
people.sort((a, b) => {
   let nameA = a.name.toUpperCase(); // ignore upper and lowercase
   let nameB = b.name.toUpperCase(); // ignore upper and lowercase
   if (nameA < nameB) {
      return -1;
   }
   if (nameA > nameB) {
      return 1;
   } // names must be equal
   return 0;
}) console.log(people)

ผลลัพธ์

สิ่งนี้จะให้ผลลัพธ์ -

[ { name: 'Agnes', age: 25 },
{ name: 'Richard', age: 21 },
{ name: 'Zoe', age: 35 } ]

วัตถุที่ซับซ้อนมากขึ้นสามารถจัดเรียงได้ด้วยวิธีนี้ ทั้งหมดเกี่ยวกับการจัดโครงสร้างฟังก์ชันการเปรียบเทียบของคุณ

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

ผลลัพธ์

arr.slice(0).sort();