실전 JavaScript

JS 배열의 정렬 방법

댓글

댓글 본문
  1. 드림보이
    수강완료했습니다...
  2. var numbers = [4, 2, 5, 1, 3];
    numbers.sort(function(a, b) {
    return a - b;
    });
    console.log(numbers);
    // [1, 2, 3, 4, 5] 출력
    (출처 https://www.codegrepper.com......tor)

    먼저 매개변수 a, b에 4, 2가 전달된다.
    4-2=2 -> a-b=양수

    function(a, b){return a - b} 일 때
    결과값이 양수가 되면 b(뒤의 매개변수)에 더 낮은 인덱스를 할당하게 되어있으므로(=두 원소 순서가 바뀜) return a-b하면 오름차순 정렬이 됨 (위의 예시에서 4는 뒤로 가고 2가 앞으로 옴)
    반대로 function(a, b){return b - a} 일 때는
    2-4=-2 -> b-a=음수
    결과값이 음수가 되면 a(앞의 매개변수)에 더 낮은 인덱스를 할당하여 내림차순 정렬이 됨

    참고로 sort()의 인자로 전달되는 function을 compare function이라고 함

    출처 : https://www.w3schools.com......asp
  3. 한지혁
    역순 정렬시 function 안에서 a + b 가 아니라 b - a 식으로 해야 동작하는게 맞는데 a + b로 해도 역순 정렬이 되니 이상하네요. 제가 직접 콘솔에서 해보면 a + b 식으로 역순정렬하려고 하면 배열 원본에 변화(역순정렬)가 안생기던데요. 이고잉님 콘솔에서는 역순정렬이 되네요. 일반 텍스트 교재도 아니고 실제 콘솔 실행결과가 역순정렬이 되어 나오니 매우 황당하네요. 그리고 정렬할때 a - b , b - a 를 사용하는지도 분명하게 설명되어 있지 않네요. 다른 문서를 봐도 그냥 쓰지 설명이 없네요...더 찾아봐야겠습니다.
  4. 박인호
    1-5
    수강완료.
  5. Byeong Heon Lee
    감사합니다~
  6. JustStudy
    2016.07.19 화
    고맙습니다 3.
  7. JustStudy
    2016.07.04 월
    고맙습니다 2.
  8. JustStudy
    고맙습니다
  9. Beluga
    열심히 잘 보고 있습니다. 감사합니다.

    한가지 ..

    11:10초 경에
    정렬 기준을 바꿀 때
    "마이너스를 플러스로 바꾸면 ..."이 아니고
    "a.length - b.length를 b.length - a.length로 바꾸면"이라고 하셔야겠네요.

    결국
    return a.length - b.length; 를
    return b.length - a.length; 로 바꾸어야 정렬 기준이 바뀌게 되겠죠.
  10. 2015-11-14 토요일
    한번에 나온 게 아니군요 ㅎㅎ
    알파벳 배우는 입장에서 유창하게 영어회화하는 사람 보니 신기했는데
    여러 시행착오가 있었군요.

    하루 빨리 익혀서 작성은 못해도 자바스크립트 해석을 능숙하게 했으면 좋겠습니다.
graphittie 자세히 보기