よくあるソート
var nums = [4,1,2,3];
nums.sort(function(a, b){
return a - b;
});
// [1, 2, 3, 4]
sort関数は引数に関数を与えると、その返り値によって昇順ソートになったり降順ソートになったりします。
しかし、内部ではどういった動作をしているのかよく分からず、それが気になったため少し調べたのですが、結果的によくわからなかったため調べた結果をメモとして残しておきます。
以下、console.logで変数nums, a, bを出力した時の記録です。
var nums = [4,1,2,3];
nums.sort(function(a, b){
console.log('nums: ' + nums);
console.log('a: ' + a);
console.log('b: ' + b);
return a - b;
});
// nums: 4,1,2,3
// a: 4
// b: 1
// nums: 1,4,2,3
// a: 4
// b: 2
// nums: 1,4,4,3
// a: 1
// b: 2
// nums: 1,2,4,3
// a: 4
// b: 3
// nums: 1,2,4,4
// a: 2
// b: 3
// [1, 2, 3, 4]
[1,2,3,4]を与えた時
var nums = [1,2,3,4];
nums.sort(function(a, b){
console.log('nums: ' + nums);
console.log('a: ' + a);
console.log('b: ' + b);
return a - b;
});
// nums: 1,2,3,4
// a: 1
// b: 2
// nums: 1,2,3,4
// a: 2
// b: 3
// nums: 1,2,3,4
// a: 3
// b: 4
// [1, 2, 3, 4]
[4,3,2,1]を与えた時
var nums = [4,3,2,1];
nums.sort(function(a, b){
console.log('nums: ' + nums);
console.log('a: ' + a);
console.log('b: ' + b);
return a - b;
});
// nums: 4,3,2,1
// a: 4
// b: 3
// nums: 3,4,2,1
// a: 4
// b: 2
// nums: 3,4,4,1
// a: 3
// b: 2
// nums: 2,3,4,1
// a: 4
// b: 1
// nums: 2,3,4,4
// a: 3
// b: 1
// nums: 2,3,3,4
// a: 2
// b: 1
// [1, 2, 3, 4]
動作確認はchromeのconsoleで行っています。