Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

วิธีทำ Numeric Sort (เรียงตัวเลข) ใน JavaScript

เมธอด sort() เริ่มต้นจะเรียงแบบ String (Lexicographic) ทำให้ [1, 10, 2] กลายเป็น [1, 10, 2] ต้องส่ง Compare Function เข้าไปเพื่อเรียงตัวเลขได้ถูกต้อง

ตัวอย่างโค้ด

<!DOCTYPE html>
<html>
  <body>
    <script>
      var arr = [75, 20, 90, 9, 49, 32, 69, 66];
      document.write("Initial Values: " + arr);
      
      function myFunction() {
        // Compare Function: val1 - val2 = Ascending (น้อยไปมาก)
        arr.sort(function(val1, val2) { return val1 - val2; });
        document.write("<br>Sorted Values: " + arr);
      }
      myFunction();
    </script>
  </body>
</html>

การทำงานของ Compare Function

  • val1 - val2 < 0 → val1 มาก่อน val2 (Ascending)
  • val1 - val2 > 0 → val2 มาก่อน val1 (Descending)
  • val1 - val2 === 0 → คงลำดับเดิม

รูปแบบย่อ (ES6 Arrow Function)

// Ascending (น้อยไปมาก)
arr.sort((a, b) => a - b);

// Descending (มากไปน้อย)
arr.sort((a, b) => b - a);

ข้อควรระวัง

  • sort() แก้ไข Array ต้นฉบับ (Mutates Original Array)
  • หากต้องการเก็บต้นฉบับ ให้ Copy ก่อน: [...arr].sort(...)
  • สำหรับตัวเลขใหญ่หรือ Floating Point ควรใช้ Intl.Collator หรือ Library เช่น Lodash