Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对.reduce()方法(Javascript)中的某些内容感到困惑_Javascript_Reduce - Fatal编程技术网

对.reduce()方法(Javascript)中的某些内容感到困惑

对.reduce()方法(Javascript)中的某些内容感到困惑,javascript,reduce,Javascript,Reduce,在Javascript中使用reduce方法的下一个函数中,我不明白为什么在if语句(reduce方法内部)中使用“current”或“array[index]时会得到不同的结果 current和array[index]不是一回事吗 function pairwise(arr, arg) { return arr.reduce(function(acc,current, index, array){ for(var i=index+1;i<array.length; i++)

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

current和array[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)

  }
函数成对(arr,arg){
返回arr.reduce(函数(acc、current、index、array){
对于(VarI=index+1;i你是指这一行

array[index]=array[i]=NaN;
如果您分配给
数组[索引]
,则您正在修改数组。
如果指定给
current
,则只会覆盖局部变量
current
,但这不会对该值来自的数组产生任何持久影响

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

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

请为数组和函数调用添加一些数据,以及您希望得到的数据。以及您得到的数据。是的,我很抱歉,我的意思是:如果(当前+数组[I]==arg),那么当前和数组[index]在if(当前+数组[I]==arg)中不是可以互换的吗?无论我放置“当前”还是数组[index],我都会得到不同的结果这对我来说很奇怪,因为它们都代表相同的东西。没有数据和你期望的很难猜测,你想要什么和什么不起作用。不,对不起,我的意思是:如果(current+array[I]==arg),那么当前和数组[index]在if(current+array[I]==arg)中不是可以互换的吗?无论我放“current”还是数组[index],我都会得到不同的结果这很奇怪,因为对我来说,它们都代表着同一件事。