최근 호텔 평가 시스템의 논리인 값 쌍(여기서의 값은 여러 행을 참조할 수 있음)을 기반으로 키:값 배열을 정렬해야 하는 알고리즘 질문을 접했습니다.
이름 위생 사용자 경험 보안
A 위생 측면에서 상위 3위 중에서 이전에 선택한 상위 3개를 선택하고, 사용자 경험을 기준으로 정렬하고, 사용자 경험을 기준으로 상위 2개를 선택하고, 보안을 기준으로 정렬한 후 첫 번째를 선택합니다. 보안 조건.
드디어 1위를 출력합니다.
실제로 비슷한 것 같은데, 정보와 지도 기능을 확인해 봤는데, 어떻게 해야 할지 아직 잘 모르겠습니다. 조언 부탁드립니다. (ps: 분명히 제 알고리즘이 나쁘지 않다는 느낌이 들지만, 조금 더 복잡한 알고리즘을 만날 때마다 헷갈립니다. 프론트엔드 피트에 들어간 지 얼마 지나지 않아 기본 js 관련 코드를 다 짚어봤습니다.) , 의심을 해결하도록 도와주세요.
으아악
일단 이게 주제인가요 아니면 프로젝트인가요? 실제 프로젝트인 경우
lodash
의sortBy
를 사용하여 목록의 개체를 정렬할 수 있습니다.lodash
的sortBy
对列表中的对象进行排序。假设你的酒店列表模型简化为:
现在需求是把list中的对象先按a排序,再按b排序,再按c排序。 实现起来就是:
如果分数是越大越好,那么应该是逆序
像题中所说的,要取出3,2, 1名,那么不需要每次都对全部结果排。
如果是面试题,还需要完成
sortBy
这个函数, 可以简单利用Array#sort
实现:要注意的是:
호텔 목록 모델이 다음과 같이 단순화되었다고 가정해 보겠습니다. ## 으아악 ##현재 요구 사항은 목록의 개체를 먼저 a, b, c 순으로 정렬하는 것입니다. 이를 구현하는 방법은 다음과 같습니다. ## 으아악 ##점수가 클수록 좋다면 역순으로 해야겠죠## 으아악 ##질문에서 언급했듯이 3, 2, 1을 꺼내고 싶다면 매번 모든 결과를 정렬할 필요는 없습니다. ## 으아악 ## 면접 질문인 경우sortBy
要实现成稳定排序, 即两个分数一致的对象,排序前后相对位置要保持不变。当然直接使用上
Array#sort(func)
sortBy
기능도 완료해야 합니다. 간단히Array#sort
를 사용하여 구현할 수 있습니다. ## 으아악 ##sortBy
는 안정적인 정렬로 구현되어야 한다는 점에 유의해야 합니다. 즉, 동일한 점수를 가진 두 개체의 상대적 위치는 전후에 변경되지 않고 유지되어야 합니다. 정렬.물론
Array#sort(func)
함수를 직접 사용하는 것도 매우 편리합니다. ##