Какой метод reduce понимают как аккумулятор в данном конкретном скрипте - PullRequest
1 голос
/ 05 мая 2020

Я не могу понять в этом конкретном скрипте, как работает reduce. Мне кажется, что сокращение всегда рассматривает первый аргумент как накопитель, но в этом случае var result = [] кажется накопителем, или, может быть, я ошибаюсь. Изначально я понял, что первым аргументом функции symDiff (arrayOne) должен быть аккумулятор для метода reduce.

  function sym() {
  var args = [];
  for (var i = 0; i < arguments.length; i++) {
    args.push(arguments[i]);
  }


    function symDiff(arrayOne, arrayTwo) {
    var result = [];

    arrayOne.forEach(function(item) {
      if (arrayTwo.indexOf(item) < 0 && result.indexOf(item) < 0) {
        result.push(item);
      }
    });

    arrayTwo.forEach(function(item) {
      if (arrayOne.indexOf(item) < 0 && result.indexOf(item) < 0) {
        result.push(item);
      }
    });

      return result;
    }

// Apply reduce method to args array, using the symDiff function
return args.reduce(symDiff);
}


sym([1, 2, 3], [5, 2, 1, 4]);
...