For循环仅显示数组的最后一个值

Blu*_*ill 0 javascript arrays for-loop

所以我有一个名为"options"的对象,其中包含以下内容:

var options = {
  assignments: ['involved', 'assignee', 'candidate'],
  assignment: ""
}
Run Code Online (Sandbox Code Playgroud)

使用for循环,我试图将我的数组赋值中的值逐个放入赋值var中.然后我使用"选项"将新值作为我在循环中调用的另一个函数的参数.

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);
}
Run Code Online (Sandbox Code Playgroud)

我期待看到这样的结果:

i的值:0

期权价值:{assignment ="涉及"......}

i的值:1

期权价值:{assignment ="受让人"......}

i的值:2

期权价值:{assignment ="candidate"...}

但相反,我有这样的事情:

i的值:0

期权价值:{assignment ="candidate"...}

i的值:1

期权价值:{assignment ="candidate"...}

i的值:2

期权价值:{assignment ="candidate"...}

事情是这样做,我的赋值变量总是设置为"候选",我的数组末尾的值.

奇怪的是,当我尝试时console.log(options.data.assignments[i]),正确的值出现了.对于"i"来说,它从0到1再到2然后正确停止.所以我的循环工作得非常好,除非我想设置变量的值.

有什么想法这里的问题是什么?

谢谢

Hea*_*ner 5

for (var i = 0; i < options.data.assignments.length; i++) {
  options.data.assignment = options.data.assignments[i];
}
Run Code Online (Sandbox Code Playgroud)

将循环3次:

  1. options.data.assignment = options.data.assignments[0] - > options.data.assignment='involved'
  2. options.data.assignment = options.data.assignments[1] - > options.data.assignment='assignee'
  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;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,最后变量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);
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的: 在此输入图像描述

如你所见,我的任务正在改变