JavaScriptでソートすると、数字でも文字列として処理されてしまいます。 なんかイケてないですね。
var ary = new Array(89, 4103, 123);
ary.sort();
alert(ary); // => 123,4103,89
JavaScriptで数字のソート
数字としてソートしたい場合は、コールバック使います。
var ary = [5,3,9,1,10]
ary.sort( function(a,b){
if( a < b ) return -1;
if( a > b ) return 1;
return 0;
});
alert(ary); // => 1,3,5,9,10
引き算で簡潔に
MDNにも例が載っていました。引き算で簡単にかかれてました。
var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b){
return a - b;
});
console.log(numbers); // => [1, 2, 3, 4, 5]
関数を分けるのであれば、
var numbers = [4, 2, 5, 1, 3];
var f = function (a, b){
return a - b;
}
console.log(numbers.sort(f)); // => [1, 2, 3, 4, 5]
アロー関数式で、より短い構文で
let numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b);
console.log(numbers); // => [1, 2, 3, 4, 5]
2021/06/14