我目前正在使用 MVC JS 框架,我希望能够获得一个对象列表,我可以从循环中随机取出一个对象列表。到目前为止,我已经成功创建了一个函数,可以找到一个随机 ID 并提取该对象,这样该部分就不再是问题了。这就是对象数组中的内容:
QuestionsSetup: function(gameType) {
// Setup Resources
var c = this.View.children;
var player1qs = [];
var leftQ = 0;
var rightQ = 0;
var maxQValue = 50;
var minQValue = 1;
// Fill array with questions
for (var i = 0; i < 5; i++) {
// Build a random question with numbers between 1 and 50
// Build Question Text to output to user
// Generate correct answers based on generated question
// Generate unsorted, incorrect answers and add them to an array
//Place Questions into object
questions.qId = i;
questions.leftQ = leftQ;
questions.rightQ = rightQ;
questions.correctAnswer = correctAnswer;
questions.allAnswers = sortedAnswers;
questions.questionText = questionText;
//Add to array of questions
player1qs.push(questions);
}
}
这确实将它们添加到数组中,但是当添加新对象时,它也会更改数组中现有对象的值,因此无论我稍后取出哪一个,它们的结果都是相同的。问题对象在模型文件夹中其自己的文件中声明。有什么方法可以在每个循环开始时告诉应用程序我想要新的空问题对象而不是引用现有的问题对象?我知道你可以使用类似的后端语言,所以我拒绝相信 JavaScript 中也不存在如此简单的东西?
最佳答案
肯定缺少为每个数组项声明一个变量。
QuestionsSetup: function(gameType) {
// Setup Resources
var c = this.View.children;
var player1qs = [];
var leftQ = 0;
var rightQ = 0;
var maxQValue = 50;
var minQValue = 1;
// Fill array with questions
for (var i = 0; i < 5; i++) {
var tempQuestion = {
qId: i,
leftQ: leftQ,
rightQ: rightQ,
correctAnswer: correctAnswer,
allAnswers: sortedAnswers,
questionText: questionText
}
// ...
//Add to array of questions
player1qs.push(tempQuestion);
}
}
在循环内使用单独的闭包也可能是一个好主意。
关于javascript - 在 JavaScript 中将对象放入数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41849377/