令人困惑的是.reduce()方法(Javascript)

时间:2017-06-08 08:27:57

标签: javascript reduce

在我在Javascript中使用reduce方法的下一个函数中,当我在if语句中使用“current”或“array [index](在我的reduce方法中)时,我不明白为什么会得到不同的结果。” / p>

当前和数组[index]不是一回事吗?

function pairwise(arr, arg) {

  return arr.reduce(function(acc,current, index, array){
    for(var i=index+1;i<array.length; i++){
      if(current+array[i]===arg){
        acc += index+i;
        array[index]=array[i]=NaN;
      }
    }

    return acc;
  }, 0)

  }

谢谢!

1 个答案:

答案 0 :(得分:2)

你的意思是在这一行?

array[index]=array[i]=NaN;

如果您分配到array[index],则需要修改数组 如果您指定给current,则只需覆盖本地变量current,但这对该值所来自的数组没有任何持久影响。

let arr = [1, 2, 3],
    current = arr[0];

current = 42;  // obviously does not modify arr
arr[0] = 42;   // obviously modifies arr