1


0

こんにちは私はactionscriptで配列を持っているとき

var arr:Array = new Array(); arr ["fsad"] = 1; trace(arr.length);

そして今連想ストリングでそれにエントリーを入れて、その後私が長さ0を得る長さを数えるが、なぜ? どうやって今それを繰り返すことができますか?

前もって感謝します

セバスチャン

5 Answer


2


あなたが達成したいことは私が推測する辞書と呼ばれています:)


1


まあ、http://help.adobe.com/en_US/AS3LCR/Flash_10.0 / [参照]を引用するには:

_ Arrayクラスを使用して連想配列(ハッシュとも呼ばれます)を作成しないでください。連想配列は、番号付き要素ではなく名前付き要素を含むデータ構造です。 連想配列を作成するには、Objectクラスを使用します。 ActionScriptではArrayクラスを使用して連想配列を作成できますが、連想配列でArrayクラスのメソッドやプロパティを使用することはできません。 _

なぜAS3がアレイを連想的に使用することを可能にしているのか - おそらく彼らはAS2の移行について心配していたのか - 私はよくわかりませんが、それは最善の方法です。 私の知る限り、 `+ length `や ` pop()+`のような組み込みのArrayフィクスチャは、整数ではないキーで追加されたものをすべて無視しますが、予測できない動作をすることもあります。


1


あなたが言及したのと同じ問題を説明する記事があります

https://stackoverflow.com/questions/284947/how-do-i-find-the-length-of-an-associative-array-in-actionscript-3-0[連想配列の長さはどうやってわかりますか? ActionScript 3.0では?

私はそれが役立つことを願っています


0


spidermonkeyを使用したJavaScript(ActionScriptの兄弟)では、次のようにします。

var obj = new Object(); // {} obj ["foo"] = 1; print(obj .__ count__); => 1 //非標準のGecko

var arr = new Array(); // [] arr.push(1); print(arr.length); => 1

配列にはArrayを、辞書にはObjectを使用してください。 それは、すべてが同じ型を使って行われるPHPのようなものではありません。


0


あなたはプロキシを使用してあなた自身の連想配列を作成することができます…​ これには高いパフォーマンスコストがかかりますが、「+ getProperty 」と「 setProperty 」をオーバーライドする配列アクセス、「 nextNameIndex 」と「 nextValueIndex」をオーバーライドする「+ for each in 」と「 for in 」を実装できます。 `と` + nextName + `それぞれ... Arrayの ` forEach `、 ` filter `、 ` map `、 ` any `、 ` every +`なども実装できます。 メソッドなので、外側から見た本当の配列のように見えます…​ しかし、それは、パフォーマンスが重要でも避けられないことでもない状況でのみ、行うべきです。

あいさつ

back2dos