我想创建一个对象,其中包含嵌套对象,其对象中包含对象,就像这个简单的结构:
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 = {};
也没有帮助。
答案 0 :(得分: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);
}
答案 1 :(得分: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: {}};
虽然将数组用于问题更有意义,但不是对象。
答案 2 :(得分: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;