数をソート

数字をソートする場合

var arr = [3, 10, 1];

arr.sort(function(a, b) {
    return a - b;
    //b - aにすると、10,3,1
});

alert(arr); //1,3,10

こんな感じに書けば、数字をソートできるのは知ってました。


しかし、文字の長さ順にするのに

var arr = ['aa', 'aaa', 'a'];

arr.sort(function(a, b) {
    return a.length - b.length;
});

alert(arr); //a,aa,aaa

これは知らなかった。
数字をソートしているのだから、当たり前のような気はするけど
教えて貰わないと気が付かないなぁ。


ならば、zの数が少ない順にするには

var arr = ['az', 'bzzz', 'czz', 'dz', 'e'];

arr.sort(function(a, b) {
    return (a.match(/z/g) || '').length - (b.match(/z/g) || '').length;
});

alert(arr); //e, az,dz,czz,bzzz

これでOKなわけだ。
なるほど、これは凄いな。
とにかく、数に直せばいいのか。



偶然、「おとなり日記」に表示されたURL覗いて知ったんだけど

Arrayオブジェクト - 幽霊がプログラミングを一から勉強するブログ

基本的な事みたいねw