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

날짜 이름에 따라 개체 정렬 JavaScript

<시간/>

예를 들어, 일주일 중 7일 동안의 습도에 대한 데이터를 포함하는 객체 배열이 있다고 가정해 보겠습니다. 그러나 데이터는 현재 배열에 무작위로 있습니다. 월요일에 대한 데이터가 먼저오고 화요일,수요일,마지막으로 일요일에 대한 데이터와 같이 날짜에 따라 객체 배열을 정렬해야 합니다.

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

const weather = [{
   day: 'Wednesday',
   humidity: 60
}, {
   day: 'Saturday',
   humidity: 50
}, {
   day: 'Thursday',
   humidity: 65
}, {
   day: 'Monday',
   humidity: 40
}, {
   day: 'Sunday',
   humidity: 35
}, {
   day: 'Friday',
   humidity: 80
}, {
   day: 'Tuesday',
   humidity: 45
}];

이 문제의 핵심은 특정 요일을 올바른 인덱스에 매핑하는 지도 개체를 만드는 것입니다. 다음과 같이 보일 것입니다 -

const map = {
   'Monday': 1,
   'Tuesday': 2,
   'Wednesday': 3,
   'Thursday': 4,
   'Friday': 5,
   'Saturday': 6,
   'Sunday': 7
};

이제 이것이 명확해지면 지도의 인덱스에 따라 개체의 순위를 지정하는 사용자 지정 콜백을 전달하는 Array.prototype.sort() 메서드를 적용할 수 있습니다.

이에 대한 전체 코드는 -

예시

const weather = [{
   day: 'Wednesday',
   humidity: 60
}, {
   day: 'Saturday',
   humidity: 50
}, {
   day: 'Thursday',
   humidity: 65
}, {
   day: 'Monday',
   humidity: 40
}, {
   day: 'Sunday',
   humidity: 35
}, {
   day: 'Friday',
   humidity: 80
}, {
   day: 'Tuesday',
   humidity: 45
}];
const map = {
   'Monday': 1,'Tuesday': 2,'Wednesday': 3,'Thursday': 4,'Friday': 5,'Saturday': 6,
   'Sunday': 7
};
weather.sort((a, b) => {
   return map[a.day] - map[b.day];
});
console.log(weather);

출력

이 코드의 출력은 -

입니다.
[
   { day: 'Monday', humidity: 40 },
   { day: 'Tuesday', humidity: 45 },
   { day: 'Wednesday', humidity: 60 },
   { day: 'Thursday', humidity: 65 },
   { day: 'Friday', humidity: 80 },
   { day: 'Saturday', humidity: 50 },
   { day: 'Sunday', humidity: 35 }
]