0

我想创建一个内部有嵌套对象的对象,其对象内部有对象,就像这个简单的结构:

var obj:Object = {
  exercise : {
    question0 : {}
    question1 : {}
    question2 : {}
    question3 : {}
  }
};

然后使用 XML 的内容动态分配这些对象的属性,如下所示:

for (var i:uint=0; i<4; i++) {
                    
  obj.exercise["question"+i].original = varXML.texts.exercise.question[i].original.@text;
  obj.exercise["question"+i].example = varXML.texts.exercise.question[i].example.@text;
  obj.exercise["question"+i].answer = varXML.texts.exercise.question[i].answer.@text;
}

此代码运行良好;这就是我知道的方式。但是question对象的数量是动态的,我无法找到一种方法来定义主要对象的结构。因此,我不想从一开始就声明question0, question1, question2, question3,question4等(否则我会收到错误消息)。

只是这样做:var objSenTense:Object = {};也无济于事。我怎样才能做到这一点?

4

3 回答 3

1

为什么不使用一系列问题?

var obj:Object = {
  exercise : {
    questions:[]
  }
};

for (var i:uint=0; i<4; i++) {

    var question:Object = {};
    question.original = varXML.texts.exercise.question[i].original.@text;
    question.example = varXML.texts.exercise.question[i].example.@text;
    question.answer = varXML.texts.exercise.question[i].answer.@text;
    obj.exercise.questions.push(question);
}
于 2013-05-07T15:47:12.630 回答
1

您可以在编辑之前强制创建对象:

if (!obj.exercise.hasOwnProperty("question"+i))
{
   obj.exercise["question"+i] = {};
}
obj.exercise["question"+i].original = varXML.texts.exercise.question[i].original.@text;
obj.exercise["question"+i].example = varXML.texts.exercise.question[i].example.@text;
obj.exercise["question"+i].answer = varXML.texts.exercise.question[i].answer.@text;
于 2013-05-07T15:53:49.943 回答
1

要从 xml 获取问题数量,请使用以下代码:

var length = varXml.texts.exercise.question.length();

for (var i:uint = 0; i < length; i++) { ...

在循环中,您可以定义任意数量的question对象,如下所示:

obj.exercise["question"+i] = {};

因此,您的初始结构obj可以像这样简单:

var obj = {exercise: {}};

尽管将数组用于问题而不是对象会更有意义。

于 2013-05-07T15:48:40.713 回答