JS, 광기 뒤에 방법.

안녕 거기, 내 첫 게시물에 오신 것을 환영합니다 ☄



이 밈에서 모든 것이 시작되었습니다.


내 친구가 이제 JS의 애인으로 나를 불렀습니다. 솔직히 말해서 나는 화가 나서 (대부분 돌아 오지 않았기 때문에) 그가 옳다는 것을 증명하기 위해 직접 시도하기로 결정했습니다. 당신이 충분히 예리하지 않다면 JS는 그것을 피할 수 있습니다. 문제를 보여 드리겠습니다.

숫자 [6,-2,2,-7]의 배열이 주어지고 Sort 메서드.sort()를 사용하여 Ruby 및 JS에서 정렬합니다.
자바스크립트에서:

    const array = [6,-2,2,-7];
    array.sort();

    // The result is: [ -2, -7, 2, 6 ]

루비에서:

 array = [6,-2,2,-7];
 array.sort();

 # The Result is:  [-7, -2, 2, 6]


지금 쯤이면 지금 보시기 바랍니다. 초보자인 경우 몇 개의 숫자가 주어지고 컴퓨터에게 다른 프로그래밍 언어를 사용하여 숫자를 정렬하라고 지시하면 한 언어는 올바르게 정렬된 숫자를 반환하고(Ruby) 다른 언어는 정확하지 않은 답(JS)을 제공합니다.

이런 일이 발생하는 이유는 Javascript가 이상한 언어이기 때문입니다. 이상하지 않고 그냥 다릅니다. Javascript의 정렬 방법은 In-Place 알고리즘을 사용하여 배열 요소를 정렬합니다.

이것은 기본적으로 배열의 요소를 문자열 시퀀스로 변환한 다음 UTF-16 코드 단위 값의 시퀀스를 비교한다는 것을 의미합니다. 간단히 말해서 숫자를 개별 문자열로 만들고 그에 따라 배열합니다.
이제 정렬 방법이 중단되지 않았습니다. 이 내부 내부 알고리즘이 작동하는지 확인하기 위해 일부 문자열을 정렬해 보겠습니다.

이름 배열이 주어지면:

    const array = ["Daniel", "Bob", "Fizz", "Buzz", "Cynthia"];
    array.sort();

    // The result is: [ 'Bob', 'Buzz', 'Cynthia', 'Daniel', 'Fizz' ]


짜잔 ☄☄ 문자열을 정렬하기 때문에 작동합니다. 정렬 방법의 기본 동작은 모든 것을 문자열처럼 처리합니다.
parameter function 를 사용하여 이 동작을 재정의할 수 있습니다.
안전 벨트를 착용하십시오. 까다로울 수 있습니다. 이 함수는 (a,b)라고 하는 2개의 매개변수를 사용합니다. 함수 및 기능에 대한 자세한 내용은 this을 참조하십시오. 이 함수는 기본적으로 a 또는 b가 다른 것보다 작거나 크거나 같은지 확인하고 데이터 유형에 관계없이 그에 따라 정렬합니다.

배열의 요소를 숫자로 처리하도록 정렬 방법에 지시하려면 just subtract the parameters (a,b) of the parameter function of the sort method . 이렇게 하면 데이터 유형에 관계없이 요소가 오름차순으로 정렬됩니다.
혼란스럽습니다. 시연해 보겠습니다.

    //given a and b are parameters of Compare function which we pass to the sort method.
     const array = [6,-2,2,-7];
        array.sort(function(a,b){
        return a-b;
    });

    // The result will be correct, you can check 😉

야, 이상해 보이는데, 정상인 같은 fat arrow function로 다시 해봅시다.

    const array = [6,-2,2,-7];
    array.sort((a, b) => return a - b);

    // The result will be correct, you can check again 😉

지금은 .

잘 정렬된 배열이 있습니다.

결론



이야기의 교훈은 농장이 있다면 대신 농사를 지을 것을 적극 권장합니다. 왜냐하면 JS를 사용하여 컴퓨터와 대화하면 어느 순간 울게 될 것이기 때문입니다. 하!, 농담이야, Javascript에는 여기저기서 이상한 것들이 많이 있지만, 뭔가 마음에 들면 결점도 좋아하게 된다.
JS의 모든 이상한 부분이 마음에 들지 않으면 JS 위에 유형 및 기타 멋진 기능을 제공하는 Microsoft의 Typescript을 사용해 보십시오.

다음 호언장담까지,

다니엘 카퉁이 데니스

좋은 웹페이지 즐겨찾기