Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 중첩 배열의 길이를 기반으로 객체 배열을 정렬하는 방법

<시간/>

다음과 같은 중첩된 객체 배열을 포함하는 객체 배열이 있다고 가정합니다. -

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"
         }
      ]
   }
]