Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

จัดเรียงอาร์เรย์ของวัตถุตามคุณสมบัติสองอย่างใน JavaScript


สมมติว่าเรามีอาร์เรย์ของวัตถุเช่นนี้ -

const arr =[ { resVal:"25FA15", resFlow:49, resName:"Rendimiento Tri−Seal Completo", resPhoto:"Tri−Sealseries.png", resHP:1.5 }, { resVal:"25FA2", resFlow:52, resName:"Rendimiento Tri−Seal Completo", resPhoto:"Tri−Sealseries.png", resHP:2 }, { resVal:"45FA2", resFlow:53, resName:"Rendimiento Hi−Cap Completo", resPhoto:"HighCapseries.png", resHP:2 }, { resVal:"35FA2", resFlow:59, resName:"Rendimiento Hi−Cap Completo", resPhoto:"HighCapseries.png", resHP:2 }]; 

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของอ็อบเจ็กต์ดังกล่าว ฟังก์ชันควรจัดเรียงอาร์เรย์นี้ตามคุณสมบัติที่แตกต่างกันสองประการ -

  • เรียงตามค่า "resFlow" ที่สูงขึ้น

  • แต่มีค่า "resHP" ต่ำสุด

แนวทาง

เรากำลังใช้วิธีผูกมัดสำหรับลำดับของคีย์ที่ระบุและลำดับการจัดเรียง

อาร์เรย์ถูกจัดเรียงตามคุณสมบัติ -

  • resHP จากน้อยไปมาก และ

  • resFlow จากมากไปน้อย

ทำงานร่วมกับการคำนวณเดลต้าและสะท้อนถึงความสัมพันธ์ของวัตถุทั้งสอง หากค่าเป็นศูนย์ ค่าทั้งสองจะเท่ากัน และเดลต้าถัดไปจะถูกคำนวณและส่งคืน

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const arr =[ { resVal:"25FA15", resFlow:49, resName:"Rendimiento Tri−Seal Completo", resPhoto:"Tri−Sealseries.png", resHP:1.5 }, { resVal:"25FA2", resFlow:52, resName:"Rendimiento Tri−Seal Completo", resPhoto:"Tri−Sealseries.png", resHP:2 }, { resVal:"45FA2", resFlow:53, resName:"Rendimiento Hi−Cap Completo", resPhoto:"HighCapseries.png", resHP:2 }, { resVal:"35FA2", resFlow:59, resName:"Rendimiento Hi−Cap Completo", resPhoto:"HighCapseries.png", resHP:2 }];const sortByTwo =(arr =[]) => { arr.sort((a, b) => { return a.resHP − b.resHP || b.resFlow − a.resFlow; });};sortByTwo(arr); console.log(arr);

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

[ { resVal:'25FA15', resFlow:49, resName:'Rendimiento Tri−Seal Completo', resPhoto:'Tri−Sealseries.png', resHP:1.5 }, { resVal:'35FA2', resFlow:59 , resName:'Rendimiento Hi−Cap Completo', resPhoto:'HighCapseries.png', resHP:2 }, { resVal:'45FA2', resFlow:53, resName:'Rendimiento Hi−Cap Completo', resPhoto:'HighCapseries. png', resHP:2 }, { resVal:'25FA2', resFlow:52, resName:'Rendimiento Tri−Seal Completo', resPhoto:'Tri−Sealseries.png', resHP:2 }]