2008/4/26 土曜日

【JS VS. AS】昇順が降順になる件。(for…inだから?)

Filed under: ActionScript,Flash — renji @ 13:50:20

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で

0.jpg
1
2

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

ABC

と出力される。とても自然。昇順で並ぶ。当たり前。

で、なんか出来心で「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);

でパブリッシュ!

ん?

結果はこちら。

outputpanel

あら??

添字の並びが降順になっている。。。

なんで?

怪しいところと言えば。。。for…inのとこくらいだけど。。。

昇順が降順になるって気持ち悪い。
ストレス解消のつもりが余計にストレス溜まるというオチ。
ものの30分ほどで。。。眠りにつきました。

で、職場の人と話をしていて、またいろいろ「?」になったのであとで調べる系。(←ほんとにやれよ自分)



HTML convert time: 0.305 sec. Powered by WordPress ME