jsのソートがうまくいかない
kintoneカスタマイズのために、javascriptを練習しているとこんな現象が起きた
const array = [2, 99, 80, 2, 19, 22];
array.sort();
console.log(array); // 出力 Array(6)[ 19,2,2,22,80,99 ]
うまくいけば
// Array(6)[ 2,2,19,22,80,99 ]
と出力されるはずだ。
sortメソッドはデフォルトだと文字列として要素を比較する
sort()メソッドは本来、デフォルトだと文字列を比較するメソッド。つまりアルフォベット順にする。数値として比較したいときは、比較関数を用いる
比較関数とは?
sort()メソッドに指定するコールバック関数。MDMではcompareFn(a, b)
と表現されている。比較関数を指定しないと、文字列として比較される
const array = [2, 99, 80, 2, 19, 22]
const array = [2, 99, 80, 2, 19, 22]
array.sort( compareFn = (a, b) => a - b )
console.log(array); // Array(6)[ 2,2,19,22,80,99 ]
array.sort( compareFn = (a, b) => a - b )
は省略してarray.sort((a, b) => a - b)
とすることもできます。