작성
·
214
·
수정됨
1
안녕하세요.
최근 검색어 구현 중 Store.js에서 스토리지의 historyData를 받아와서 sort를 할 때,
강의에서 나오는대로 > 부등호로 하면 정렬이 되지 않고
- 를 해줘야 내림차순으로 정렬이 됩니다.
왜 강의와 똑같이 부등호로 했을 때 정렬이 안되는 것일까요?
getHistoryList() {
return this.storage.historyData.sort(this._sortHistory); // 날짜 역순 정렬
}
_sortHistory(history1, history2) {
// return history2.date > history1.date;
return history2.date - history1.date;
}
답변 2
1
지원님 안녕하세요? 자바스크립트 배열의 sort 함수를 사용하실때 양수,음수,0을 반환하는 비교함수를 사용하는 것이 맞습니다. 제가 정확한 동작을 모르고 부등호를 사용한 것인데요. 이것은 브라우져 별로 코드를 평가하는 차이가 있는 것 같습니다. 지원님께서 사용하신 것처럼 - 연산자를 사용해 주세요.
비슷한 질문이 있어서 참고하시면 좋겠습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
현지원님의 질문은 Array.prototype.sort()
함수의 사용 방법과 JavaScript에서 정렬 로직의 작동 방식에 관한 이해와 관련이 있습니다.
JavaScript에서 .sort()
메소드는 배열의 요소를 정렬할 때, 비교 함수를 제공할 수 있습니다. 비교 함수는 두 요소 a와 b를 비교하여 반환값에 따라 정렬 순서를 결정합니다. 반환 값이 음수이면 a가 b보다 앞에 오도록 정렬하고, 양수이면 b가 a보다 앞에 오도록 정렬합니다. 0이면 두 요소의 순서를 변경하지 않습니다.
강의에서 나온 부등호(>
)를 사용한 방식이 정렬에 실패하는 경우는, 부등호를 사용하여 반환된 결과(true 또는 false)가 sort 메소드에 필요한 숫자 값(-1, 1, 0)로 직접적으로 변환되지 않기 때문입니다. -
연산자를 사용하면, 두 날짜의 차이를 숫자로 직접 반환하여 sort 함수가 이해할 수 있는 정수를 제공하여 정렬 조건을 충족시킵니다.
현지원님의 상황에 대해 유사한 문제 상황이 언급된 다음 질문&답변 게시글이 도움이 될 것 같습니다:
이 답변은 질문에서 언급한 문제의 원인과 해결 방안에 대해 직접적으로 관련이 있으며, Array.prototype.sort()
의 사용 방식을 이해하는 데 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다!