a
및 b
의 값 인 Array#sort
기능에 의해 결정됩니다 무엇 귀하의 화살표를 호출 기능. 일반적인 기능과 동일합니다. 예를 들어, 귀하의 코드는 다음과 동일하게 작동합니다 :
function Array_sort(callback) {
// ...
while (not_done_sorting_yet) {
// ...
result = callback(element[x], element[y]); // The call to your callback
// ...code using result...
}
// ...
}
그냥 실제로 어떤 콜백 (와 같은 어떤 기능 : 1
console.log(arr.sort(function(a, b) {
return a.name[1] < b.name[1];
});
이 Array#sort
내부, 당신은 당신의 콜백에 전화를 상상할 수), 코드 은 어떤 인수를 얻고 그 값을 결정하는 코드입니다. (간략화를 위해 일부의 응용 프로그램을 무시).
BTW
1 : 그 코드가 잘못되면, sort
콜의 리턴 값은 번호하지 부울 가정된다 : 0
a
이프 및 b
은 정렬 목적으로 동일하며 0보다 작 으면 a
은 정렬 목적으로 b
보다 작음 (b
보다 앞에 와야 함) 정렬을 위해 a
이 "보다 큼"b
인 경우 0보다 커야합니다 (이후이어야 함).). String#localeCompare
가 적절한 값을 반환하기 때문에 ...
// Reverse alpha by second letter in name
console.log(arr.sort((a, b) => b.name[1].localeCompare(a.name[1])));
: ([인용 코드에 주석에서] "이름 속성의 두 번째 문자 알파벳 순으로 역 분류"배열에 대한) 여기에 올바른 버전의
당신이 부르는 문자열이 당신이 부르는 문자열보다 "작다"또는 "더 큰"것입니다. (그리고 name[1]
은 한 자의 문자열입니다.)
이것은 화살표 기능에 관한 것이 아닙니다. 'sort'는 고차 함수이며 두 개의 인수로 호출되는 콜백을 사용합니다. 'a'와'b'는 원하는 이름으로 부를 수 있습니다. – elclanrs
이 책에는 실제로 * arr.sort ((a, b) => a.name [1]
그래도 되나요? 나는'{}'을 감싸는 것을 생략하는 화살표 함수가 자동으로 리턴된다고 생각했습니다. 편집 : 그것은 작동합니다 (아마 나는'name [1]'이 아니라'name [0]') – pmilla1606