【JS VS. AS】昇順が降順になる件。(for…inだから?)
Cで配列を作ると「連続したメモリ空間」で、JavaScript配列は「ハッシュ・テーブル」で「値とキーのテーブル」みたいなことを知って「!」なって、久しぶりにjsをちょこちょこ弄ってみる。。。
//配列test_arrをnewする。
test_arr = new Array();//配列test_arrを文字A、B、Cそれぞれを入れる。
test_arr = ["A","B","C"];var str=”";
//fon…inで配列test_arrの添字を抜いてく。
for(var indexNum in test_arr){
//添字をループ毎に出力
alert(indexNum);
//配列test_arrの値と改行文字を変数strに溜めていく。
str += test_arr[indexNum];
str += “\n”;
}
//for…inのループでstrに溜めた値を出力。
//A 改行 B 改行 C 改行と出力される。
alert(str);
当たり前なんですが、実行結果は、
for…inのループごとにalertで



都度、「添字」が出力されて、
最後にfor…inで配列の値を溜めたstrの値がAlertに

と出力される。とても自然。昇順で並ぶ。当たり前。
で、なんか出来心で「JSもASもECMAScriptなんだから。」ってことで同じソースをFlashでも実行してみる。alert()メソッドはFlashには無いので、そこだけtrace()メソッドに変えてみる。ASのソースはこちら。
//配列test_arrをnewする。
test_arr = new Array();//配列test_arrを文字A、B、Cそれぞれを入れる。
test_arr = ["A","B","C"];var str=”";
//fon…inで配列test_arrの添字を抜いてく。
for(var indexNum in test_arr){
//添字をループ毎に出力
trace(indexNum);
//配列test_arrの値と改行文字を変数strに溜めていく。
str += test_arr[indexNum];
str += “\n”;
}
//for…inのループでstrに溜めた値を出力。
//A 改行 B 改行 C 改行と出力される。
trace(str);
でパブリッシュ!
ん?
結果はこちら。

あら??
添字の並びが降順になっている。。。
なんで?
怪しいところと言えば。。。for…inのとこくらいだけど。。。
昇順が降順になるって気持ち悪い。
ストレス解消のつもりが余計にストレス溜まるというオチ。
ものの30分ほどで。。。眠りにつきました。
で、職場の人と話をしていて、またいろいろ「?」になったのであとで調べる系。(←ほんとにやれよ自分)
TrackBack URL :
Comments (2)
