在JavaScript中将对象放入数组
我目前正在使用一个MVC JS框架,我希望能够得到一个对象列表,我可以从循环中随机输入。到目前为止,我已经成功地创建了一个函数,该函数可以找到一个随机ID并提取该对象,从而使该部分不再是问题。这是进入对象数组的内容:在JavaScript中将对象放入数组,javascript,arrays,Javascript,Arrays,我目前正在使用一个MVC JS框架,我希望能够得到一个对象列表,我可以从循环中随机输入。到目前为止,我已经成功地创建了一个函数,该函数可以找到一个随机ID并提取该对象,从而使该部分不再是问题。这是进入对象数组的内容: QuestionsSetup: function(gameType) { // Setup Resources var c = this.View.children; var player1qs = []; var
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);
}
}
这确实会将它们添加到数组中,但在添加新对象时,也会更改数组中现有对象的值,因此无论稍后拉出哪一个对象,它们的结果都是相同的。questions对象在models文件夹中自己的文件中声明。在每个循环的开始,有没有办法告诉应用程序我想要新的空问题对象,而不是引用现有的空问题对象?我知道您可以使用类似的后端语言,所以我拒绝相信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);
}
}
在循环中使用单独的闭包也可能是一个好主意。执行以下操作:
for (var i = 0; i < 5; i++) {
let questions = {};
// the rest....
您需要首先定义对象。也许您应该在初始化其属性之前初始化questions对象,因此代码应该如下所示:
//Place Questions into object
questions = {};
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);
代码太多了,尽量少举一个例子,请将其简化为通过引用传递的相关部分,因此更新原始数据就是更新原始引用数据。每次都应该使用一个新的问句对象?问句的定义在哪里?是在全球空间吗?每次迭代都会覆盖属性,并始终将相同的对象推送到数组。