Movatterモバイル変換


[0]ホーム

URL:


latest log

酩酊状態で書いたエンジニアポエムです。酩酊状態で読んでください。

この広告は、90日以上更新していないブログに表示しています。

JavaScriptでオレオレnatsortを実装してみました

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-y8
uupaa"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分ほどで、サクッと書いたわりには実用的な気がするよ

検索
注目記事

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。

読者です読者をやめる読者になる読者になる

[8]ページ先頭

©2009-2025 Movatter.jp