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

JavaScript에서 두 가지 기준으로 배열 정렬

<시간/>

다음은 날짜 및 isImportant별로 정렬할 배열입니다. isImportant 속성이 true인 모든 개체는 isImportant가 false인 개체보다 순위가 높으며 두 그룹 모두 날짜 속성에 따라 정렬됩니다.

다음은 우리의 배열입니다 -

const array = [{
   id: 545,
   date: 591020824000,
   isImportant: false,
},
{
   id: 322,
   date: 591080224000,
   isImportant: false,
},
{
   id: 543,
   bdate: 591080424000,
   isImportant: true,
},
{
   id: 423,
   date: 591080225525,
   isImportant: false,
},
{
   id: 135,
   date: 591020225525,
   isImportant: true,
},
];

그런 다음 위와 같은 배열 정렬 방법을 사용하여 위의 배열에서 원하는 결과를 얻을 수 있습니다 -

array.sort((a, b) => {
   if(a.isImportant && !b.isImportant){
      return -1;
   }else if(!a.isImportant && b.isImportant){
      return 1;
   }else{
      return b.date-a.date;
   }
});

sort() 콜백 함수는 일반적으로 두 개의 인수, 예를 들어 a 및 b를 수신합니다. 이는 sort()가 호출된 배열의 두 요소에 불과하며 콜백 함수는 배열의 가능한 각 요소 쌍에 대해 실행됩니다.

콜백에서 -1(음수 값)을 반환하면 첫 번째 요소의 순위를 두 번째보다 높게 지정합니다.

콜백에서 1(양수 값)을 반환한다는 것은 두 번째 요소의 순위를 첫 번째 요소보다 높게 지정한다는 의미입니다.

0을 반환하면 변경 사항이 없습니다. 또는 b 중 하나에 isImportant 속성이 tofalse로 설정되어 있는지 확인하고, 그렇다면 해당 항목의 순위를 낮춥니다. 그렇지 않으면 날짜 속성에 따라 순위를 매깁니다.

예시

이제 전체 예를 살펴보겠습니다 -

const array = [{
   id: 545,
   date: 591020824000,
   isImportant: false,
},
{
   id: 322,
   date: 591080224000,
   isImportant: false,
},
{
   id: 543,
   bdate: 591080424000,
   isImportant: true,
},
{
   id: 423,
   date: 591080225525,
   isImportant: false,
},
{
   id: 135,
   date: 591020225525,
   isImportant: true,
},
];
array.sort((a, b) => {
   if(a.isImportant && !b.isImportant){
      return -1;
   }else if(!a.isImportant && b.isImportant){
      return 1;
   }else{
      return b.date-a.date;
   }
});
console.log(array);

출력

콘솔의 코드 출력은 다음과 같습니다. -

[
   { id: 3, date: 591080424000, isImportant: true },{ id: 5, date: 591020225525, isImportant: true },
   { id: 4, date: 591080225525, isImportant: false },{ id: 2, date: 591080224000, isImportant: false },
   { id: 1, date: 591020824000, isImportant: false }
]