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();