สมมติว่าเรามีอาร์เรย์ของวัตถุที่มีอาร์เรย์ที่ซ้อนกันของวัตถุเช่นนี้ -
const arr = [ { name: "Cat1", elements : [ { name: name, id: id } ] }, { name: "Cat2", elements : [ { name: name, id: id }, { name: name, id: id }, { name: name, id: id } ] }, { name: "Cat3", elements : [ { name: name, id: id }, { name: name, id: id } ] } ];
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว ฟังก์ชันควรจัดเรียงอาร์เรย์ของอ็อบเจ็กต์นี้
ออบเจ็กต์ที่มีจำนวนอ็อบเจ็กต์มากกว่าในคุณสมบัติอาร์เรย์ "องค์ประกอบ" ควรอยู่ในอันดับที่สูงกว่า
ดังนั้นหลังจากจัดเรียงอาร์เรย์แล้วควรมีลักษณะดังนี้ −
const output = [ { name: "Cat2", elements : [ { name: name, id: id }, { name: name, id: id }, { name: name, id: id } ] }, { name: "Cat3", elements : [ { name: name, id: id }, { name: name, id: id } ] }, { name: "Cat1", elements : [ { name: name, id: id } ] } ];
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = [ { "name": "Cat1", elements : [ { "name": "name", "id": "id" } ] }, { "name": "Cat2", elements : [ { "name": "name", "id": "id" }, { "name": "name", "id": "id" }, { "name": "name", "id": "id" } ] }, { "name": "Cat3", elements : [ { "name": "name", "id": "id" }, { "name": "name", "id": "id" } ] } ]; const sorter = (a, b) => { if(a.elements.length > b.elements.length) { return −1; } else { return 1; } } arr.sort(sorter); console.log(JSON.stringify(arr, undefined, 4));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[ { name": "Cat2", "elements": [ { "name": "name", "id": "id" }, { "name": "name", "id": "id" }, { "name": "name", "id": "id" } ] }, { "name": "Cat3", "elements": [ { "name": "name", "id": "id" }, { "name": "name", "id": "id" } ] }, { "name": "Cat1", "elements": [ { "name": "name", "id": "id" } ] } ]