所以我有一个名为“选项”的对象,其中包含这些项目:
var options = {
assignments: ['involved', 'assignee', 'candidate'],
assignment: ""
}
通过 for 循环,我尝试将数组赋值中的值一一放入赋值变量中。然后我使用“选项”和新值作为我在循环内调用的另一个函数的参数。
for (var i = 0; i < options.data.assignments.length; i++) {
options.data.assignment = options.data.assignments[i];
console.log("value of i : ",i);
console.log("value of options :",options);
otherFunction(options);
}
我期待看到这样的结果:
value of i : 0
value of options : {assignment = "involved"...}
value of i : 1
value of options : {assignment = "assignee"...}
value of i : 2
value of options : {assignment = "candidate"...}
但是我有这样的东西:
value of i : 0
value of options : {assignment = "candidate"...}
value of i : 1
value of options : {assignment = "candidate"...}
value of i : 2
value of options : {assignment = "candidate"...}
问题是,在执行此操作时,我的赋值变量始终设置为“candidate”,即数组末尾的值。
奇怪的是,当我尝试 console.log(options.data.assignments[i])
时,会显示正确的值。 “i”也是如此,它从 0 到 1,然后到 2,然后正确停止。所以我的循环工作得很好,除非我想设置变量的值。
你知道这里有什么问题吗?
谢谢
最佳答案
for (var i = 0; i < options.data.assignments.length; i++) {
options.data.assignment = options.data.assignments[i];
}
将循环3次:
options.data.assignment = options.data.assignments[0]
->options.data.assignment='参与'
options.data.assignment = options.data.assignments[1]
->options.data.assignment='受让人'
options.data.assignment = options.data.assignments[2]
->options.data.assignment='candidate'
所以事实上,您将 3 个不同的数据一一分配给同一个值,因此,最终 options.data.assignment
将是循环的最后一个值。
以下是一个更简单的示例:
var a = 0;
for (var i = 0; i < 3; i++) {
a = i;
}
如您所见,最终变量a
将始终是循环i
的最后一个值。
首先它应该是options.assignments
而不是options.data.assignments
。
这是你想要的东西
var options = {
assignments: ['involved', 'assignee', 'candidate'],
assignment: ""
}
for (var i = 0; i < options.assignments.length; i++) {
options.assignment = options.assignments[i];
console.log("value of i : ",i);
console.log("value of options :", options);
// otherFunction(options);
}
如您所见,我的任务正在更改
关于javascript - For循环只显示数组的最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51245738/