2
var questions:Array = new Array;
questions[0] = "qname:mc_01, qvalue:1";
questions[1] = "qname:mc_02, qvalue:1";
questions[2] = "qname:mc_03, qvalue:1";
questions[3] = "qname:mc_04, qvalue:1";
questions[4] = "qname:mc_05, qvalue:1";
questions[5] = "qname:mc_06, qvalue:1";
questions[6] = "qname:mc_07, qvalue:1";
questions[7] = "qname:mc_08, qvalue:1";
questions[8] = "qname:mc_09, qvalue:1";
questions[9] = "qname:mc_10, qvalue:1";
questions[10] = "qname:mc_11, qvalue:2";
questions[11] = "qname:mc_12, qvalue:2";
questions[12] = "qname:mc_13, qvalue:2";
questions[13] = "qname:mc_14, qvalue:2";
questions[14] = "qname:mc_15, qvalue:2";
questions[15] = "qname:mc_16, qvalue:2";
questions[16] = "qname:mc_17, qvalue:2";
questions[17] = "qname:mc_18, qvalue:2";
questions[18] = "qname:mc_19, qvalue:2";
questions[19] = "qname:mc_20, qvalue:2";
questions[20] = "qname:mc_21, qvalue:3";
questions[21] = "qname:mc_22, qvalue:3";
questions[22] = "qname:mc_23, qvalue:3";
questions[23] = "qname:mc_24, qvalue:3";
questions[24] = "qname:mc_25, qvalue:3";
questions[25] = "qname:mc_26, qvalue:3";
questions[26] = "qname:mc_27, qvalue:3";
questions[27] = "qname:mc_28, qvalue:3";
questions[28] = "qname:mc_29, qvalue:3";
questions[29] = "qname:mc_30, qvalue:3";

この配列を持っていて、qnameプロパティにアクセスしたいのですが、その方法を思い出せません。それは何かのようなものですquestions[0].qnamequestions[0](qname)

4

3 に答える 3

6

配列要素をオブジェクトではなく文字列として定義しました。代わりにこれを試してください:

var questions:Array = new Array;
questions[0] = {qname:mc_01, qvalue:1};
...

二重引用符の代わりに中括弧。引用符を使用して文字列を作成します。中かっこを使用すると、動的オブジェクトを作成し、そのプロパティを設定できます。したがって、 の文字列値を作成する場合は、の代わりにqnameとして定義してください。qname:"mc_01"qname:mc_01

したがって、questions[0].qnameまたはquestions[0]["qname"]を使用してプロパティにアクセスできます。

于 2012-08-28T19:53:45.670 に答える
1

ただし、前の回答で説明されていることを実行できない場合 (たとえば、サーバーから文字列を取得する場合) は、正規表現を使用してそれらの値を適切に取得できます。

var searchPattern : RegExp = /(?P<qname>(?<=qname\:)[a-zA-Z0-9_]+(?=[\s,]*))/g;
trace( searchPattern.exec(questions[1]).qname ); // traces out: mc_02
于 2012-08-29T08:46:17.390 に答える
0

あなたが ActionScript 3.0 とタグ付けしたように、それは厳密に型指定された言語であるため、データ構造を保持する型付きクラスをお勧めします。

package your.package.name
{
    public class Question
    {
        protected var _name:String;
        protected var _value:String;

        public function Question(name:String = null, value:String = null)
        {
            this.name = name;
            this.value = value;
        }

        public function get name():String 
        {
            return _name;
        }

        public function set name(value:String):void 
        {
            _name = value;
        }

        public function get value():String 
        {
            return _value;
        }

        public function set value(value:String):void 
        {
            _value = value;
        }
    }
}

getter と setter を持ち、これらの props をコンストラクターで公開することにより、次の 2 つの方法でそれらを作成できます。

var question:Question = new Question("Question1", "Question value");

また:

var question:Question = new Question();
question.name = "Question1";
question.value = "Question value";

これにより、IDE でプロパティを取得するための Intellisense の面で利点が得られ、名前と値に間違った型を入力するのを防ぐタイプ セーフも提供されます。

次に、質問を取得するには:

questions[0].name; // in this example Question1
questions[0].value; // in this example Question value

通常、この例ではリテラル xml を使用しますが、xml や Web サービスなどのデータ ソースから質問が寄せられます。そのシナリオでは、オブジェクトをいくつかのループで構築する必要があります。

var questionsXML:XML = 
<questions>
    <question name="Question1">Question1 value</question>
    <question name="Question2">Question2 value</question>
    <question name="Question3">Question3 value</question>
</questions>

それで:

var questions:Array = [];

for each (var questionXML:XML in questionsXML.question) 
{
    var question:Question = new Question();
    question.name = questionXML.@name;
    question.value = questionXML.text();
    questions.push(question);
}
于 2012-08-29T09:17:06.993 に答える