หากคุณอยู่ใน JavaScript มาระยะหนึ่งแล้วคุณต้องรู้ว่าการเรียงลำดับฟังก์ชั่นการเรียงลำดับของอาร์เรย์เป็นวิธีการในต้นแบบอาร์เรย์คืออาเรย์. prototype.sort () เรียงลำดับ มาดูคำอธิบายจาก Mozilla MDN:
หากไม่ได้ให้การเปรียบเทียบฟังก์ชันองค์ประกอบจะถูกจัดเรียงโดยการแปลงเป็นสตริงและเปรียบเทียบสตริงในพจนานุกรม ("พจนานุกรม" หรือ "สมุดโทรศัพท์" ไม่ได้เป็นตัวเลข) ตัวอย่างเช่น "80" มาก่อน "9" ตามลำดับพจนานุกรม แต่ในรูปแบบตัวเลข 9 มาก่อน 80
นี่คือตัวอย่างง่ายๆ:
การคัดลอกรหัสมีดังนี้:
// เอาต์พุต [1, 2, 3]
console.log ([3, 2, 1] .sort ());
// output ["A", "B", "C"]
console.log (["c", "b", "a"]. sort ());
// output [1, 2, "a", "b"]
console.log (["b", 2, "a", 1] .sort ());
ดังที่เห็นได้จากตัวอย่างข้างต้นค่าเริ่มต้นจะถูกจัดเรียงตามลำดับตัวอักษรของพจนานุกรม
โชคดีที่เรียงลำดับยอมรับฟังก์ชั่นการเปรียบเทียบที่กำหนดเองดังที่แสดงในตัวอย่างต่อไปนี้:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น CompareFunction (a, b) {
if (a> b) {
กลับ -1;
} อื่นถ้า (a <b) {
กลับ 1;
}อื่น {
กลับ 0;
-
-
// outputs ["zuojj", "Benjamin", "1"]
console.log (["Benjamin", "1", "zuojj"]. เรียงลำดับ (CompareFunction));
หลังจากการเรียงลำดับเรามีคำถามอื่น: จะควบคุมคำสั่งซื้อจากน้อยไปหามากขึ้นได้อย่างไร?
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น CompareFunction (FLAG) {
ธง = ธง? ธง: "ASC";
ฟังก์ชั่น return (a, b) {
if (a> b) {
คืนธง === "desc"? -1: 1;
} อื่นถ้า (a <b) {
คืนธง === "desc"? 1: -1;
}อื่น {
กลับ 0;
-
-
-
// outputs ["1", "Benjamin", "Zuojj"]
console.log (["Benjamin", "1", "zuojj"]. เรียงลำดับ (CompareFunction ()));
// outputs ["zuojj", "Benjamin", "1"]
console.log (["Benjamin", "1", "zuojj"]. sort (CompareFunction ("DESC")));
กฎการเรียงลำดับสำหรับการเปรียบเทียบมีดังนี้:
1. หากส่งคืนจำนวนลบ A จะถูกจัดเรียงเป็นดัชนีที่ต่ำกว่าในอาร์เรย์
2. หากส่งคืนจำนวนบวก A จะถูกจัดเรียงเป็นดัชนีที่สูงขึ้น
3. และถ้ามันส่งคืน 0 ไม่จำเป็นต้องมีการเรียงลำดับ
มาดูข้อความที่ตัดตอนมาจาก Mozilla MDN:
พฤติกรรมของวิธีการเรียงลำดับเปลี่ยนระหว่าง JavaScript 1.1 และ JavaScript 1.2 เพื่ออธิบายคำอธิบายนี้ลองดูตัวอย่าง:
ใน JavaScript 1.1 ในบางแพลตฟอร์มวิธีการเรียงลำดับไม่ทำงาน วิธีนี้ใช้งานได้กับแพลตฟอร์มทั้งหมดสำหรับ JavaScript 1.2
ใน JavaScript 1.2 วิธีนี้จะไม่แปลงองค์ประกอบที่ไม่ได้กำหนดเป็น NULL อีกต่อไป แต่มันเรียงลำดับไปยังจุดสูงสุดของอาร์เรย์ กรุณาคลิกที่นี่เพื่อดูรายละเอียด
การคัดลอกรหัสมีดังนี้:
var arr = [];
arr [0] = "มด";
arr [5] = "ม้าลาย";
// outputs ["Ant", 5: "Zebra"]
console.log (arr);
// เอาต์พุต 6
console.log (arr.length);
// เอาท์พุท "มด ****** ม้าลาย"
console.log (arr.oin ("*"));
//เรียงลำดับ
var sortarr = arr.sort ();
// outputs ["Ant", "Zebra"]
console.log (sortarr);
// เอาต์พุต 6
console.log (sortarr.length);
// outputs "Ant*Zebra ****"
console.log (sortarr.join ("*"));
ฉันหวังว่าบทความนี้จะเป็นประโยชน์สำหรับคุณในการเรียนรู้และเข้าใจวิธีการเรียงลำดับ () ฉันหวังว่าคุณจะวิพากษ์วิจารณ์และแก้ไขแง่มุมที่ไม่เหมาะสมในบทความ
ลิงค์อ้างอิง: https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/global_objects/array/sort