コメント
このコメントは、【Wiki】スクリプト/汎用関数/配列をソートするへのコメントです。コメントの内容
コメントの内容(一番最初の投稿)
mosmoss(投稿日:2017/04/05 19:04/05/17)
この関数とても助かってるんですが、
配列を二次元配列aにして、a[i][0]に数値を入れて並び替えるような時、
数値の桁が違うと数値が順番にならないようです
このように、一次元配列でない時、文字列的な比較での並び替えになるようです
配列a[i][0]にスコア、a[i][1]にプレイヤー名などを入れて、
a[i][0]のスコアを並び替えてランキングを作る・・・みたいなことをしたかったので、
100以下の数値の時に、数値の前に" "を足して使ってます。
しかし、原因がよくわからないため、報告しました。
配列を二次元配列aにして、a[i][0]に数値を入れて並び替えるような時、
数値の桁が違うと数値が順番にならないようです
aa=createArray() a=createArray() a[0]=88 a[1]=0pushArray(aa, a) a=createArray() a[0]=89 a[1]=1pushArray(aa, a) a=createArray() a[0]=109 a[1]=2pushArray(aa, a) a=createArray() a[0]=60 a[1]=3 pushArray(aa, a) a=createArray() a[0]=960 a[1]=4 pushArray(aa, a) speak(aa[0][0], aa[1][0], aa[2][0], aa[3][0], aa[4][0]) #88,89,109,60,960 aa=sortArray(aa,false) speak(aa[0][0], aa[1][0], aa[2][0], aa[3][0], aa[4][0]) #960,89,88,60,109 #二次元配列だと数値の比較での降順にならず、文字列比較になる?ため、109が一番下に来てしまう a=createArray() a[0]=88; a[1]=89; a[2]=109; a[3]=60; a[4]=960 speak(a[0], a[1], a[2], a[3], a[4]) #88,89,109,60,960 a=sortArray(a,false) speak(a[0], a[1], a[2], a[3], a[4]) #960,109,89,88,60 #一次元配列なら数値の比較で降順になる
このように、一次元配列でない時、文字列的な比較での並び替えになるようです
配列a[i][0]にスコア、a[i][1]にプレイヤー名などを入れて、
a[i][0]のスコアを並び替えてランキングを作る・・・みたいなことをしたかったので、
100以下の数値の時に、数値の前に" "を足して使ってます。
しかし、原因がよくわからないため、報告しました。
配列を二次元配列aにして、a[i][0]に数値を入れて並び替えるような時、
数値の桁が違うと数値が順番にならないようです
このように、一次元配列でない時、文字列的な比較での並び替えになるようです
配列a[i][0]にスコア、a[i][1]にプレイヤー名などを入れて、
a[i][0]のスコアを並び替えてランキングを作る・・・みたいなことをしたかったので、
100以下の数値の時に、数値の前に" "を足して使ってます。
しかし、原因がよくわからないため、報告しました。