บางทีคุณอาจใช้การเรียงลำดับของอาร์เรย์ใน JavaScript
บางทีคุณอาจเชื่อเสมอว่ามันจะให้ผลลัพธ์ที่ถูกต้อง
อย่างน้อยฉันก็คิดอย่างนั้นจนกระทั่งวันหนึ่งฉันเห็นรหัสต่อไปนี้:
การคัดลอกรหัสมีดังนี้:
[5,10,1] .sort ();
บางทีผลลัพธ์อาจไม่คาดคิดเล็กน้อย ผลลัพธ์มีดังนี้:
การคัดลอกรหัสมีดังนี้:
[1,10,5]
หลังจากการตรวจสอบอย่างระมัดระวังฉันพบว่าวิธีการเรียงลำดับเริ่มต้นไม่ได้เรียงลำดับตามข้อมูลการสร้างพลาสติก แต่ใช้วิธีการจับคู่สตริง
กล่าวอีกนัยหนึ่งนี้ 1 ใน 10 ทำให้เกิดข้อผิดพลาดในรหัสข้างต้น
แน่นอนว่ามีวิธีแก้ปัญหามากมายคุณสามารถส่งผ่านฟังก์ชั่นการโทรกลับในวิธีการเรียงลำดับ
การคัดลอกรหัสมีดังนี้:
[5,10,1] .sort (ฟังก์ชั่น (x, y) {
if (x> y) {return 1;
}อื่น{
กลับ -1
-
-
-
สิ่งนี้จะได้รับผลลัพธ์ที่คุณคาดหวัง
หากคุณพบมันโดยบังเอิญให้บันทึกเพื่อป้องกันการลืม