Озадаченный чем-то в методе .reduce () (Javascript)

1

в следующей функции, где я использую метод reduce в Javascript, я не понимаю, почему я получаю разные результаты, когда я использую "current" или "array [index] в моем if-заявлении (внутри моего метода уменьшения).

Не текущие и массив [индекс] то же самое?

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)

  }

Спасибо !!

Теги:
reduce

1 ответ

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
  • 0
    Извините, я имел в виду: не взаимозаменяемы ли current и array [index] внутри if (current + array [i] === arg)? Я получаю другой результат, независимо от того, ставлю я «текущий» или массив [индекс], что странно, поскольку для меня они оба представляют одно и то же.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню