逆引きソート
久々に JavaScript でプログラミング。いろいろ思い出すために、配列を逆引き辞書順にソートする関数を作った。詩を書く時などにどうぞ。
var a = ['the', 'shells', 'she', 'sells', 'are', 'surely', 'seashells']; var a1 = sortWords(copy(a)); var a2 = sortWords(copy(a), true); function copy(seq) { return seq.slice(0); } function sortWords(seq, reverse_flag) { if (reverse_flag) return seq.sort(comp_reverse); else return seq.sort(); } function comp_reverse(s1, s2) { var i1, i2; for (i1 = s1.length - 1, i2 = s2.length - 1; i1 >= 0 && i2 >= 0; --i1, --i2) { if (s1[i1] === s2[i2]) ; // pass else if (s1[i1] > s2[i2]) return 1; else return -1; } return i1 - i2; }
元の配列 a をソートする。a1 は通常の辞書順で、a2 は逆引き順。
> a ["the", "shells", "she", "sells", "are", "surely", "seashells"] > a1 ["are", "seashells", "sells", "she", "shells", "surely", "the"] > a2 ["she", "the", "are", "shells", "seashells", "sells", "surely"]