javascript - For循环只显示数组的最后一个值

标签 javascript arrays for-loop

所以我有一个名为“选项”的对象,其中包含这些项目:

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次:

  1. options.data.assignment = options.data.assignments[0] -> options.data.assignment='参与'
  2. options.data.assignment = options.data.assignments[1] -> options.data.assignment='受让人'
  3. 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);
}

这是我得到的: enter image description here

如您所见,我的任务正在更改

关于javascript - For循环只显示数组的最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51245738/

相关文章:

arrays - Swift Int 数组到 MetalBuffer<Int>

javascript - 如何正确使用字段对数组进行排序

C++ 数组操作(类似 python 的操作)

VBA EXCEL 多个嵌套 FOR 循环,为表达式设置两个变量

c - 为什么 strlen 函数在此 for 循环条件下不起作用?

javascript - 编辑 Dojo 增强网格时的空格

javascript 将 i 替换为 I

Matlab,if条件不循环

javascript - 如何在 karma + jasmine 中测试我的 Angular 作用域函数?

javascript - 如何使用 *ngFor 循环 [object Object]