การเรียงอนุกรมตัวเลข JavaScript
- หน้าก่อน JS การค้นหาแบบ Array
- หน้าต่อไป JS การวนลูปแบบ Array
sort()
วิธีนี้เป็นหนึ่งในวิธีแบบจำลองที่มีความรุนแรงที่สุด。
เรียงลำดับแบบจำลอง
sort()
วิธีเรียงลำดับตัวอักษรของแบบจำลอง:
ตัวอย่าง
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // จัดลำดับตัวแปลใน fruits
กลับความเปลี่ยนแปลง
reverse()
วิธีนี้จะกลับความเปลี่ยนแปลงลำดับตัวแปลในตัวแปล
คุณสามารถใช้มันเพื่อเรียงลำดับตัวแปลในลำดับต่ำขึ้น:
ตัวอย่าง
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // จัดลำดับตัวแปลใน fruits fruits.reverse(); // ความเปลี่ยนแปลงลำดับตัวแปล
การเรียงลำดับตัวเลข
โดยเริ่มต้นsort()
ฟังก์ชันจัดลำดับตามตัวอักษรจัดลำดับค่าตามลำดับ
ฟังก์ชันนี้เหมาะสำหรับตัวอักษร ("Apple" จะอยู่ต่อหน้า "Banana")
อย่างไรก็ตาม ถ้าเรียงตัวเลขตามตัวอักษร "25" จะใหญ่กว่า "100" เพราะ "2" ใหญ่กว่า "1"
ดังนั้นsort()
วิธีนี้จะก่อให้เกิดผลลัพธ์ที่ไม่ถูกต้องเมื่อเรียงลำดับตัวเลข
เราผ่านฟังก์ชันคำนวณเพื่อแก้ปัญหานี้:
ตัวอย่าง
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
ใช้เทคนิคเดียวกันเพื่อเรียงลำดับตัวเลขในลำดับต่ำขึ้น:
ตัวอย่าง
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a});
ฟังก์ชันคำนวณ
วัตถุประสงค์ของฟังก์ชันเปรียบเทียบคือที่จะกำหนดลำดับเรียงตามลำดับอื่น
ฟังก์ชันเปรียบเทียบควรกลับค่าลบ 0 หรือบวก ตามค่าที่เปรียบเทียบ:
function(a, b){return a-b}
เมื่อ sort()
เมื่อฟังก์ชันเปรียบเทียบสองค่า จะส่งค่าทั้งสองไปยังฟังก์ชันเปรียบเทียบ และจัดลำดับค่าตามค่าที่กลับมาจากฟังก์ชัน
ตัวอย่าง:
เมื่อเปรียบเทียบ 40 กับ 100sort()
วิธีนี้จะเรียกฟังก์ชันเปรียบเทียบ function(40,100)
ฟังก์ชันคำนวณ 40-100 แล้วกลับค่า -60 (ค่าลบ)
ฟังก์ชันเรียงลำดับจะจัดลำดับ 40 ต่ำกว่า 100。
คุณสามารถใช้โค้ดส่วนนี้เพื่อทดสอบการเรียงลำดับตัวเลขและอักษรได้:
<button onclick="myFunction1()">เรียงลำดับตามอักษร</button> <button onclick="myFunction2()">เรียงลำดับตามตัวเลข</button> <p id="demo"></p> <script> var points = [40, 100, 1, 5, 25, 10]; document.getElementById("demo").innerHTML = points; function myFunction1() { points.sort(); document.getElementById("demo").innerHTML = points; } function myFunction2() { points.sort(function(a, b){return a - b}); document.getElementById("demo").innerHTML = points; } </script>
เรียงลำดับแรงนิยมในลำดับสุ่ม
ตัวอย่าง
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
ค้นหาค่าสูงสุด (หรือต่ำสุด) ของแรงนิยม
JavaScript ไม่มีฟังก์ชันที่ใช้ในลู่คำสั่งเพื่อค้นหาค่าสูงสุดหรือต่ำสุดในแรงนิยม
อย่างไรก็ตาม หลังจากเรียงลำดับแรงนิยม คุณสามารถใช้ดัชนีเพื่อหาค่าสูงสุดหรือต่ำสุด
เรียงลำดับขึ้น
ตัวอย่าง
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // ตอนนี้ points[0] มีค่าต่ำสุด // และ points[points.length-1] มีค่าสูงสุด
เรียงลำดับลดลง
ตัวอย่าง
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // ตอนนี้ points[0] มีค่าสูงสุด // และ points[points.length-1] มีค่าต่ำสุด
หากคุณต้องการหาค่าสูงสุดหรือต่ำสุดแค่เดียว มันเป็นวิธีที่มีประสิทธิภาพต่ำที่สุดที่จะเรียงลำดับแรงนิยมทั้งหมด
ใช้ Math.max() สำหรับแรงนิยม
คุณสามารถใช้ Math.max.apply
เพื่อค้นหาค่าสูงสุดในแรงนิยม:
ตัวอย่าง
function myArrayMax(arr) { return Math.max.apply(null, arr); }
Math.max.apply([1, 2, 3])
เท่ากับ Math.max(1, 2, 3)
。
ใช้ Math.min() สำหรับแรงนิยม
คุณสามารถใช้ Math.min.apply
เพื่อค้นหาค่าต่ำสุดในแรงนิยม:
ตัวอย่าง
function myArrayMin(arr) { return Math.min.apply(null, arr); }
Math.min.apply([1, 2, 3])
เท่ากับ Math.min(1, 2, 3)
。
วิธี Min / Max JavaScript ของฉัน
รูปแบบที่รวดเร็วที่สุดคือใช้
ฟังก์ชันนี้เลือกผ่านแรงนิยม ใช้ค่าสูงที่ได้ที่แรกเปรียบเทียบกับแต่ละค่า:
ตัวอย่าง(ค้นหา Max)
function myArrayMax(arr) { var len = arr.length var max = -Infinity; while (len--) { if (arr[len] > max) { max = arr[len]; } } return max; }
ฟังก์ชันนี้เลือกผ่านแรงนิยม ใช้ค่าต่ำที่ได้ที่แรกเปรียบเทียบกับแต่ละค่า:
ตัวอย่าง(ค้นหา Min)
function myArrayMin(arr) { var len = arr.length var min = Infinity; while (len--) { if (arr[len] < min) { min = arr[len]; } } return min; }
การเรียงลำดับ Array ของสิ่ง
JavaScript Array มักจะมีสิ่งที่เป็นตัวแปร
ตัวอย่าง
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];
แม้ว่าตัวแปรจะมีคุณสมบัติของชนิดข้อมูลที่ต่างกันsort()
วิธีนี้ยังสามารถใช้เพื่อเรียงลำดับตัวแปร Array
แนวทางแก้ปัญหาคือด้วยการเปรียบเทียบฟังก์ชันเพื่อเปรียบเทียบค่าของคุณสมบัติ:
ตัวอย่าง
cars.sort(function(a, b){return a.year - b.year});
การเปรียบเทียบคุณสมบัติของตัวอักษรจะละเอียดขึ้น:
ตัวอย่าง
cars.sort(function(a, b){ var x = a.type.toLowerCase(); var y = b.type.toLowerCase(); if (x < y) {return -1;} if (x > y) {return 1;} return 0; });
- หน้าก่อน JS การค้นหาแบบ Array
- หน้าต่อไป JS การวนลูปแบบ Array