Не могу понять почему не самбится кодворс

в кодворсе https://www.codewars.com/kata/5411e3e95f3a7f6a7a0000e3/train/javascript выдает ошибку, не могу понять в чем ошибка

Array.prototype.reduce = function(process, initial) {
  for (let i = 0; i < this.length; i++) {
    if (!initial) {
      i++;
      initial = this[0];
    }
    initial = process(initial, this[i]);
 }
 return initial;
}

console.log(['a','y','!'].reduce(function(x,y){return x+y}, 'y'));


Ответы (1 шт):

Автор решения: EzioMercer

Во первых не надо этот if в for, каждый проверяете попусту. Причём сама проверка тоже неверная. Если я передам в initial значение 0, то вы его пропустите т.к. !0 в if воспринимается как true, вам надо проверять именно на значение undefined:

Array.prototype.reduce = function(process, initial) {
  let i = 0;
  
  if (initial === undefined) {
    initial = this[0];
    i = 1;
  }
  
  for (; i < this.length; ++i) initial = process(initial, this[i]);
  
  return initial;
}

console.log(['a','y','!'].reduce((x,y) => {return x + y}, 'y'));

→ Ссылка