0

このソート関数の引数 a と b はどこから来ますか? それらは自動的に渡されますか?

dir = "asc"
sortArray = new Array("hello", "Link to Google", "zFile", "aFile");

//sort array
if (dir == "asc") {
    sortArray.sort(function(a, b) {
        return a.toLowerCase() > b.toLowerCase()
    });
} else {
    sortArray.sort(function(a, b) {
        return b.toLowerCase() > a.toLowerCase()
    });
}

    for (var i = 0; i < sortArray.length; i++) {
    console.log(sortArray[i]);
}
4

3 に答える 3

3

それらは自動的に渡されますか?

はい。

sort2 つのオブジェクトを比較する必要があるときはいつでも関数が呼び出す匿名コンパレータ関数を作成しています。

于 2012-06-05T15:55:39.200 に答える
0

これらはソート関数に自動的に渡されます。無名関数のパラメーター リストにそれらの名前を配置するのは、単に便利です。argumentsコレクションをログに記録することで、関数に渡されたすべてのアイテムを確認できます。

sortArray.sort(function() {
    console.log( arguments );
});

次のログが生成されます。

["hello", "Link to Google"] // 0 vs 1
["Link to Google", "zFile"] // 1 vs 2
["zFile", "aFile"]          // 2 vs 3

これらの 2 つの変数は と にarguments[0]なりarguments[1]、比較する必要がある配列の 2 つの項目を表します。この比較の戻り値は、、、-1または0です1

于 2012-06-05T15:57:54.870 に答える
0

2 つの部分 (選択再配置ロジックと要素比較ロジック) を含む並べ替えアルゴリズム。Javascript ランタイム ライブラリは、pick-rearrange ロジック (クイック ソートなど) を処理し、2 つの要素を選択して比較結果が必要な場合、array.sort パラメーターで関数を呼び出して取得します。

于 2012-06-05T16:02:13.383 に答える