数字をソート
var aa = [3, 9, 10, 8, 5, 4, 2, 1, 7, 6, 0, 20]
これを単にsort()でソートすると、1の次に10、2の次に20が来てしまう。
どうやら最初の文字で順番が決まってしまう様子。
なので、最初に文字数を付けてからソートすればいいのかな、と思い
最初に文字数を付けて、それをソートして、それから最初の文字を削ればいいのか?
というわけで実行。
var aa = [3, 9, 10, 8, 5, 4, 2, 1, 7, 6, 0, 20]; var bb = new Array(); for (var i in aa) {bb.push(String(aa[i]).length + String(aa[i]));} bb = bb.sort(); var cc = new Array(); for (var j in bb) {cc.push(bb[j].slice(1));} alert(cc.join(", "));
見事に順番通り、0から20になった。
しかし、もっと簡単に並べる方法を偶然見掛けたサイトで偶然知った。
↓こんな感じ。
var aa = [3, 9, 10, 8, 5, 4, 2, 1, 7, 6, 0, 20]; alert(aa.sort(pp).join(", ")); function pp(a, b) {return a - b;}
sort()の括弧に直接a - bを入れてはいけないらしい。
理屈はわからん、aからbということで順番に並べろという事だろう、ふーん。
と、思いきや
半角のアルファベットなら何でもよろしいようで
U - Zでも同じ結果に。
まあ、順番に並べろという事だろう、ふーん。
と、思いきや
U - aでも同じ結果に。
ふーん、としか言いようがない。
あ、タイトル変えてみた。「むきーっ!」は飽きた。