เมื่อพูดถึงการเรียงลำดับตารางสิ่งแรกที่เราต้องพูดถึงคือการเรียงลำดับอาร์เรย์เพราะการเรียงลำดับอาร์เรย์เป็นพื้นฐานของการเรียงลำดับตาราง
JavaScript มีวิธีการเรียงลำดับ () สำหรับอาร์เรย์สำหรับการเรียงลำดับตาราง โดยค่าเริ่มต้นวิธีนี้จะจัดเรียงอาร์เรย์ในอาร์เรย์ตามลำดับของรหัส ASCII JavaScript ยังมีวิธีการอาร์เรย์ย้อนกลับ () สำหรับอาร์เรย์
ดูตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
ฟังก์ชัน sortArray () {
var arraytest = ["z", 5,2, "a", 32,3];
arraytest.sort ();
การแจ้งเตือน (arraytest.toString ()); // เอาท์พุท: 2,3,32,5, a, z
arraytest.reverse ();
การแจ้งเตือน (arraytest.toString ()); // เอาท์พุท: Z, A, 5,32,3,2
-
SortArray ();
ฮ่าฮ่า 5 มีขนาดใหญ่กว่า 32 เห็นได้ชัดว่านี่ไม่ใช่ผลลัพธ์ที่เราต้องการ ฉันเพิ่งบอกว่าวิธีการเรียงลำดับ () เรียงลำดับตามลำดับของรหัส ASCII
ในความเป็นจริงวิธีการเรียงลำดับ () ยังอนุญาตให้ใช้พารามิเตอร์ประเภทฟังก์ชันซึ่งเราสามารถเรียกฟังก์ชันเปรียบเทียบ เมื่อฟังก์ชั่นการเปรียบเทียบสามารถรับพารามิเตอร์สองตัวฟังก์ชั่นต่อไปนี้จะส่งคืนความหมายของค่า:
การคัดลอกรหัสมีดังนี้:
-1: พารามิเตอร์แรกมีขนาดเล็กกว่าพารามิเตอร์ที่สอง
0: พารามิเตอร์แรกเท่ากับพารามิเตอร์ที่สอง
1: พารามิเตอร์แรกมากกว่าพารามิเตอร์ที่สอง
การคัดลอกรหัสมีดังนี้:
-
* ฟังก์ชั่นเปรียบเทียบ
* @param {Object} param1 param1 เพื่อเปรียบเทียบ
* @param {Object} param2 param2 เพื่อเปรียบเทียบ
* @return {number} ถ้า param1> param2 ส่งคืน 1
* ถ้า param1 == param2 ส่งคืน 0
* ถ้า param1 <param2 ส่งคืน -1
-
ฟังก์ชั่น CompareFunc (param1, param2) {
// ถ้าพารามิเตอร์ทั้งสองเป็นประเภทสตริง
if (typeof param1 == "string" && typeof param2 == "string") {
ส่งคืน param1.localeCompare (param2);
-
// ถ้าพารามิเตอร์ 1 คือตัวเลขพารามิเตอร์ 2 คือสตริง
if (typeof param1 == "number" && typeof param2 == "สตริง") {
กลับ -1;
-
// ถ้าพารามิเตอร์ 1 เป็นสตริงพารามิเตอร์ 2 คือตัวเลข
if (typeof param1 == "string" && typeof param2 == "number") {
กลับ 1;
-
// ถ้าพารามิเตอร์ทั้งสองเป็นตัวเลข
if (typeof param1 == "number" && typeof param2 == "number") {
if (param1> param2) ส่งคืน 1;
if (param1 == param2) ส่งคืน 0;
if (param1 <param2) return -1;
-
-
เมื่อเราดำเนินการ arraytest.sort (CompareFunc) เราได้รับผลลัพธ์ที่ถูกต้อง
ณ จุดนี้เราต้องอธิบายการใช้วิธี LocalEcompare () ซึ่งเป็นวิธีการเรียงลำดับสตริงด้วยพารามิเตอร์เดียวเท่านั้นคือสตริงที่จะเปรียบเทียบ
คำอธิบายเฉพาะมีดังนี้:
1. หากวัตถุสตริงถูกจัดเรียงตามตัวอักษรก่อนที่สตริงในพารามิเตอร์ให้ส่งคืนหมายเลขลบ
2. หากวัตถุสตริงถูกจัดเรียงในลำดับอักขระหลังจากสตริงในพารามิเตอร์ให้ส่งคืนหมายเลขบวก
3. หากวัตถุสตริงเท่ากับสตริงในพารามิเตอร์ให้ส่งคืน 0
นอกจากนี้วิธีการ LocalEcompare () มีคุณสมบัติที่ไม่ซ้ำกันอื่น คุณลักษณะที่ไม่ซ้ำกันนี้สามารถสะท้อนได้ในสถานที่ที่มีลายเซ็นของวิธีการ (ในสถานที่ท้องถิ่น) นั่นคือการดำเนินการของมันขึ้นอยู่กับลักษณะของภูมิภาค หากในระบบภาษาอังกฤษการใช้งานอาจอยู่ในลำดับของสตริงและหากอยู่ในภาษาจีนการใช้งานจะขึ้นอยู่กับพินอินของตัวอักษรตัวแรก
ฮ่าฮ่านี่หมายความว่าแม้ว่าเราจะเกี่ยวข้องกับตัวละครจีนในโปรแกรมการเรียงลำดับของเราจะไม่ผิดพลาด
อ้างถึงโปรแกรมต่อไปนี้:
การคัดลอกรหัสมีดังนี้:
var testarray = ["foot", "book", "ite", "home"];
document.write (testarray.sort (
ฟังก์ชั่น CompareFunction (param1, param2) {
ส่งคืน param1.localeCompare (param2); // เอาท์พุท: 一, บ้าน, หนังสือ, เท้า
-
-