値は、あなたの矢と呼ぶものである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...
}
// ...
}
ただ、実際には任意のコールバック(と同じように、任意の関数:
console.log(arr.sort(function(a, b) {
return a.name[1] < b.name[1];
});
はArray#sort
の内部では、あなたのコールバックの呼び出しを想像することができます)、コードを呼び出して、取得する引数とその値を決定するコードをと呼びます。 (簡略化のための部分的なアプリケーションを無視する。)
BTW:a
場合0
:このコードが間違っている、sort
コールバック関数からの戻り値が番号なく、ブーリアンであると考えられますb
がソートの目的で等しい場合、0より小さい値はa
はソートの目的でb
より小さい(b
の前に来なければなりません)、a
が ""より大きい場合は0より大きくなります)。
ここでは、正しいバージョン(配列のためには、[引用されたコード内のコメントから]「nameプロパティの第二の手紙アルファベット順にソートリバース」)です:
// Reverse alpha by second letter in name
console.log(arr.sort((a, b) => b.name[1].localeCompare(a.name[1])));
... String#localeCompare
は適切な値を返しますので、あなたがそれを呼び出す文字列が、あなたがそれを呼び出す文字列の「より小さい」か「より大きい」かどうかを判断します。 (name[1]
は1文字の文字列です)
これは矢印の機能に関するものではありません。 'sort'は高次関数であり、2つの引数で呼び出されるコールバックをとります。 'a'と' b'はあなたが望むものに名前をつけることができます。 – elclanrs
この本は本当に 'arr.sort((a、b)=> a.name [1]
それはありますか?私は、 '{}'をラップすることを省略した矢印関数が自動的に戻ると考えました。編集:それは動作します(私は 'name [1]'ではなく 'name [0]'でソートします) – pmilla1606