こんにちは、node.js の初心者です。今日は次のコードを試しました。
var fs, arr;
var dir, str;
var cont, item;
fs=require('fs');
cont=fs.readFileSync('unsort.txt').toString();
arr=cont.split('\n');
arr.sort();
for(str=arr.shift();str&&(item=arr.shift());)
str+='\n'+item;
fs.writeFileSync('sort_by_script.txt', str);
上記の node.js コードは、node.exe のディレクトリからファイルを文字列として読み取ります。文字列を改行 ('\n') で分割して配列を取得します。配列をソートし、ソートされた配列をファイルに出力します。そのため、スクリプトは全体としてファイルを読み取り、エントリを並べ替え、並べ替えられたエントリを別のファイルに保存します。問題は、ソート順が正しくないことです。MS Excel を使用して unsort.txt の内容を手動で並べ替えてみたところ、正しい並べ替え順序が得られました。arr.sort() が正しく機能しない理由を教えてください。unsort.txt、sort_by_script.txt、sort_by_ms_excel.txt、node.exe をパッケージ [Sort.rar][1] でダウンロードできます。
注 : unsort.txt には番号がありません。すべてアルファベットのみです。
unsort.txt の例:
appjs
gbi
node
frame
require
process
module
WebSocket
webkitAudioContext
webkitRTCPeerConnection
webkitPeerConnection00
webkitMediaStream
MediaController
HTMLSourceElement
TimeRanges