다음과 같은 중첩된 객체 배열을 포함하는 객체 배열이 있다고 가정합니다. -
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 함수를 작성해야 합니다. 함수는 이 객체 배열을 정렬해야 합니다.
"elements" 배열 속성에 더 많은 수의 개체를 포함하는 개체의 순위가 더 높아야 합니다.
따라서 배열을 정렬한 후에는 다음과 같아야 합니다. -
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"
}
]
}
]