บทความนี้อธิบายวิธีที่ JS ใช้ array.prototype.sort () เพื่อเรียงลำดับวัตถุอาร์เรย์ แบ่งปันสำหรับการอ้างอิงของคุณ การวิเคราะห์เฉพาะมีดังนี้:
เมื่อพูดถึงการเรียงลำดับวัตถุอาร์เรย์ก่อนอื่นเรามาทำความเข้าใจสั้น ๆ array.prototype.sort () วิธีการเรียงลำดับยอมรับพารามิเตอร์ - ฟังก์ชัน ฟังก์ชั่นจะให้พารามิเตอร์สองตัวตามลำดับสององค์ประกอบที่เปรียบเทียบ หากองค์ประกอบเป็นสตริงมันจะถูกเปรียบเทียบผ่านรหัส Unicode หากเป็นตัวเลขขนาดของค่าจะถูกเปรียบเทียบ หาก 1 ถูกส่งคืนในฟังก์ชั่นเปรียบเทียบองค์ประกอบสององค์ประกอบจะถูกแลกเปลี่ยนและจะไม่แลกเปลี่ยน 0 และ -1 ลองมาดูตัวอย่าง:
การคัดลอกรหัสมีดังนี้: var arr = [3, 5, 2, 1];
// การเรียงลำดับจากขนาดเล็กไปใหญ่
arr.sort (ฟังก์ชั่น (a, b) {
กลับมา> b? 1: -1;
-
// ผลลัพธ์คือ: [1, 2, 3, 5]
กลับไปที่หัวข้อของเราฉันจะเขียนได้อย่างไรถ้าฉันเรียงลำดับวัตถุอาร์เรย์? ในความเป็นจริงหลักการนั้นเหมือนกับข้างต้นเช่น:
คัดลอกรหัสดังนี้: var arr = [
{a: 2, b: 3.2}
{a: 3, b: 1.2}
{a: 4, b: 2.2}
{a: 6, b: 1.2}
{a: 5, b: 3.2}
-
/// จัดเรียงตามแอตทริบิวต์ B จากขนาดเล็กถึงใหญ่
arr.sort (ฟังก์ชั่น (x, y) {
ส่งคืน xb> yb? 1: -1;
-
X และ Y เป็นองค์ประกอบของ ARR นั่นคือวัตถุดังนั้นคุณสามารถเปรียบเทียบคุณสมบัติของวัตถุทั้งสองโดยตรง
ในตัวอย่างข้างต้นมีการทำซ้ำในองค์ประกอบที่เล็กที่สุด หากข้อกำหนดคือ: การเรียงลำดับก่อนจากขนาดเล็กถึงใหญ่ตามแอตทริบิวต์ B และหากมีการทำซ้ำในขนาดเล็กที่สุดให้เรียงตามคุณลักษณะ A ฉันจะเขียนได้อย่างไร?
เมื่อเรียงลำดับการเรียงลำดับแรกโดยแอตทริบิวต์ B หาก XB มากกว่า YB ให้ย้าย x ไปทางขวาของ y หาก XB เท่ากับ YB ให้เปรียบเทียบกับ XA และ YA ดังนั้นรหัสมีดังนี้:
คัดลอกรหัสดังนี้: arr.sort (ฟังก์ชั่น (x, y) {
ถ้า (xb> yb) {
กลับ 1;
} อื่นถ้า (xb === yb) {
กลับ xa> ya? 1: -1;
} อื่นถ้า (xb <yb) {
กลับ -1;
-
-
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม JavaScript ของทุกคน