この広告は、90日以上更新していないブログに表示しています。
node.js の fs.readdir が返すファイルオーダーだと不都合があるので、natsort を書いてみました。
http://sourcefrog.net/projects/natsort/ と
http://d.hatena.ne.jp/noonworks/20091231/1262265351 を参考にしました。
function natsort(ary,// @arg StringArray: items. ["abc100", "abc1", "abc10"] ignoreCase){// @arg Boolean(= false): true is case-insensitive// @ret StringArray: sorted items. ["abc1", "abc10", "abc100"]function num(s){return isNaN(s) ? s.split("").map(function(v){return v.charCodeAt(0);}) :[+s];}return ary.sort(function(a, b){var aa =Array.prototype.concat.apply([], (ignoreCase ? a.toLowerCase() : a).split(/(\d+)/).map(num));var bb =Array.prototype.concat.apply([], (ignoreCase ? b.toLowerCase() : b).split(/(\d+)/).map(num));var x = 0, y = 0, i = 0, iz = aa.length;for (; i < iz; ++i){ x = aa[i] || 0; y = bb[i] || 0;if (x !== y){return x - y;}}return a.length - b.length;});}
本家とはソート結果が一部異なりますが、
その辺の仕様がよくわからなかったので、あまりこだわらないでおきます。
http://sourcefrog.net/projects/natsort/example-out.txt
Original1-21-021-2010-20fredjanepic01pic2pic02pic02apic3pic4pic 4elsepic 5pic05pic 5 pic 5 somethingpic 6pic 7pic100pic100apic120pic121pic02000tomx2-g8x2-y7x2-y08x8-y8uupaa"1-2","1-02","1-20","10-20","fred","jane","pic01","pic2","pic02","pic02a","pic3","pic4","pic05","pic 4 else","pic 5","pic 5 ","pic 5 something","pic 6","pic 7","pic100","pic100a","pic120","pic121","pic02000","tom","x2-g8","x2-y7","x2-y08","x8-y8"
diffXXX
(ε・◇・)з o O ( 10分ほどで、サクッと書いたわりには実用的な気がするよ
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。