2次元配列のソート2
今回は、テキストファイルからデータを読込んでソートするスプリクトです。
2次元配列に取込む方法で、かなり試行錯誤しましたが、
データが2列の場合は、簡単なスプリクトにまとまりました。
arry[i]=data.split(sp)
i=i+1
<arry.txt>
5.25 2.27
1.38 4.56
4.53 3.72
3.19 1.96
2.87 5.41
<追記>
2列以上の場合は、slice()メソッドを利用します。
arry[i]=data.split(sp).slice(1,3)
⇒2列目と3列目を返します。
//2次元配列のソート(テキストファイル)
fs=new ActiveXObject( "Scripting.FileSystemObject" )
w=fs.CreateTextFile("sort.txt")
r=fs.OpenTextFile("arry.txt")
//
var arry=new Array()
//
i=0
sp=" "
//テキストデータ読込み
while (!r.AtEndOfLine) {
data=r.ReadLine()
//2次元配列に変換
arry[i]=data.split(sp)
i=i+1
}
//昇順ソート
var sort=arry.sort(
function(a,b){
return(parseFloat(a[0])-parseFloat(b[0]))
})
//sort.txtに書出し(結果確認)
for(i=0;i<=4;i++){
w.WriteLine(sort[i])
}
w.Close()
r.Close()
| 固定リンク
コメント
>arry[i]=data.split(sp).slice(1,3)
2行にしたほうが理解しやすいと思います。
xy=data.split(sp);
array.push([xy[1],xy[2]]);
投稿: 通りすがり | 2018年10月19日 (金) 09時40分
通りすがりさん、こんばんは。
確かに、わかりづらいかもしれませんが、
配列の宣言も一度で済むし、
覚えてもらった方が良いと思ったので。
投稿: somem | 2018年10月19日 (金) 19時39分