2012-08-28 4 views
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].qname 또는 questions[0](qname)과 같은 형식입니까?배열 속성에 액세스

답변

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"]을 사용하여 속성에 액세스 할 수 있습니다.

1

그러나 당신이 할 수없는 경우 (당신이 서버에서 해당 문자열을 얻을 예) 당신이 친절하게 그 값을 얻기 위해 정기적 expresions를 사용하여 이전의 대답에 말했다 무엇 : 당신이 액션 스크립트 3.0으로 태그

var searchPattern : RegExp = /(?P<qname>(?<=qname\:)[a-zA-Z0-9_]+(?=[\s,]*))/g; 
trace(searchPattern.exec(questions[1]).qname); // traces out: mc_02 
0

, 그리고 강력한 형식 언어, 나는 데이터 구조를 개최하는 입력 된 클래스를 권하고 싶습니다.

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

OR :이 측면에서 이점을 제공

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

을 getter 및 setter를 가진 또한 당신이 두 가지 방법을 만들 수 있습니다 생성자에서 이러한 소품을 노출함으로써

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; 
     } 
    } 
} 

귀하의 IDE에서 속성을 가져 오기위한 인텔리 센스와 유형 안전성을 사용하여 이름과 값에 잘못된 유형을 넣는 것을 막을 수 있습니다. 점에서, XML 또는 내가이 예를 들어 문자 XML을 사용합니다 어떤 웹 서비스처럼, 보통

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

질문 일부 데이터 소스로부터 오는 것입니다 : 다음

질문 잡아 시나리오 일부 루프 예에 객체를 구축하려는 것 : 그런 다음

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 = [email protected]; 
    question.value = questionXML.text(); 
    questions.push(question); 
} 
관련 문제