Javascript에서 정렬 | 후드 아래에서 어떻게 작동합니까?

소개



이 포스트에서 제가 이야기할 내용을 제목에서 짐작하셨을 것입니다. 정렬은 가장 인기 있고 자주 사용되는 방법 중 하나입니다.

Sort() 메서드는 배열의 요소를 정렬하고 특정 정렬 형식으로 배열을 반환합니다.

다음 예를 살펴보십시오.

let animals = [ "Zebra", "Bear", "Kangaroo", "Giraffe", "Lion", "Tiger", "Dog" ];
animals.sort();
console.log(animals);

// Output :  ['Bear', 'Dog', 'Giraffe', 'Kangaroo', 'Lion', 'Tiger', 'Zebra']


오! 정말 쉽습니다😄!

이제 다음 예를 살펴보십시오.

let numbers = [ 1 , 50, 101 , 4 , 90 , 40 , 1000, 78 , 9 ];
numbers.sort();
console.log(numbers);

// Expected  Output :   [1, 4, 9, 40, 50, 78, 90, 101, 1000]
// Actual Output :   [1, 1000, 101, 4, 40, 50, 78, 9, 90]


오 잠깐만요!😳 우리는 무엇을 얻었습니까?




알아봅시다!🧐
  • 관찰 결과 배열에 문자열 데이터 유형의 요소만 포함된 경우 오름차순으로 정렬된다는 것이 한 가지 분명합니다.
  • 기본적으로 배후에서 발생하는 일은 배열의 각 요소가 문자열로 변환된 다음 이들에 해당하는 UTF-16 코드 값을 비교하는 것입니다.
  • 간단히 하기 위해 다음 다이어그램을 살펴보십시오.


  • 이제 두 번째 예에서 출력이 너무 이상한 이유를 알게 되었습니다.
  • 내부에서 일어나는 일에 대해 알지 못했기 때문입니다.



  • 비교 기능으로 정렬


  • 또한 정렬 방법이 비교 기능으로 알려진 a를 허용할 수 있는 또 다른 형식이 있습니다
  • .
  • 비교 함수는 두 개의 매개변수(예: a & b )를 수락하고 이 두 값을 비교합니다.
  • 양의 정수를 반환하는 경우 a 앞에 b를 배치합니다.
  • 음의 정수를 반환하는 경우 a를 b 앞에 배치합니다.
  • 0을 반환하는 경우 주문을 그대로 유지합니다.




  • 이제 숫자가 포함된 배열을 정렬하는 함수를 작성해 보겠습니다.

  • 인라인 기능 사용



    화살표 기능 사용



    약식 버전 사용




    반환 값:


  • sort() 메서드는 place-in 알고리즘 원리에 따라 작동합니다.
  • 원래 배열의 참조를 반환합니다.

  • That means if we try to change the returned array it will also change the original array as well.


  • 다음 예를 살펴보십시오.

  • let numbers = [1, 5, 6, 7, 2, 3, 4, 8, 9 ];
    let sortedArray = numbers.sort((a, b) => a - b);
    
    console.log( " numbers : ",numbers); // [1, 2, 3, 4, 5, 6, 7, 8, 9];
    console.log( " sortedArray : ",sortedArray); // [1, 2, 3, 4, 5, 6, 7, 8, 9];
    
    // To check the same reference 
    console.log( numbers === soretedArray); // true
    



    신청 :



    이전에 내 인터뷰 중 하나에서 나는 프로그램을 작성하라는 요청을 받았으며 문제는 다음과 같습니다.

    //음수가 아닌 정수 목록이 주어지면 가능한 한 가장 큰 수를 형성하도록 배열합니다. 결과는 매우 커질 것이므로 결과를 문자열 형식으로 반환합니다.
    //입력:
    //3 30 34 5 9
    //546 54 60 548

    //출력: 9534330;
    //6054854654;



    들러 주셔서 감사합니다!. 유용하다고 생각되면 공유를 고려하십시오. 여기에서 나와 연결할 수 있습니다.

    좋은 웹페이지 즐겨찾기