Сбой функции filter () в Safari - PullRequest
0 голосов
/ 07 марта 2019

Я использую полизаполнение IntersectionObserver из w3c.Эта конкретная строка разрывается в Safari.После расследования я обнаружил, что приведенный ниже фрагмент не работает в Safari, но работает в Chrome и Firefox.Есть ли альтернатива этому вопросу?Я передаю 0.3 _initThresholds ()

  IntersectionObserver.prototype._initThresholds = function(opt_threshold) {
  var threshold = opt_threshold || [0];
  if (!Array.isArray(threshold)) threshold = [threshold];

  return threshold.sort().filter(function(t, i, a) {
    console.log(t, i, a);
    if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {
      throw new Error('threshold must be a number between 0 and 1 inclusively');
    }
    return t !== a[i - 1];
  });
};

Если приведенный выше фрагмент кода запускается в Safari, он возвращает:

`0.3 – 0 – undefined` in Safari
TypeError: undefined is not an object (evaluating 'a[i - 1]')

В Chrome и Firefox он возвращает:

   0.3 0 Array [ 0.3 ]
   Array [ 0.3 ]
...