Giả sử, chúng ta có một mảng đối tượng chứa mảng đối tượng lồng nhau như thế này -
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 } ] } ];
Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng như vậy. Hàm sẽ sắp xếp mảng đối tượng này.
Các đối tượng chứa nhiều đối tượng hơn trong thuộc tính mảng "phần tử" sẽ xếp hạng cao hơn.
Do đó, sau khi sắp xếp mảng sẽ như thế này -
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 } ] } ];
Ví dụ
Mã cho điều này sẽ là -
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));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
[ { 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" } ] } ]