Объект не поддерживает свойство или метод forEach IE 11 - PullRequest
0 голосов
/ 11 сентября 2018

у меня ниже фрагмент

data.forEach(function (row) {
var dataRow = [];

columns.forEach(function (column) {

dataRow.push(row[column].toString());
})

что дает мне ошибку data.forEach(function (row) { . Что должно быть альтернативой этому? Как это решить?

Ответы [ 2 ]

0 голосов
/ 22 марта 2019

Для тех, кто использует document.querySelectorAll('..').forEach() и имеет эту проблему в IE 11, говоря: «forEach - это не функция», я нашел хак на Reddit, который прекрасно работал:

if (typeof NodeList.prototype.forEach !== 'function')  {
    NodeList.prototype.forEach = Array.prototype.forEach;
}

Это отлично работает и составляет 3строки кода вместо полизаполнения.

@ JoeTaras намекнул на это в своем ответе (да, IE имеет имеет Array.forEach, начиная с IE9), но я все еще думаю, что мой ответ добавляет ценность и будетпомогите другим пользователям.

0 голосов
/ 11 сентября 2018

IE11 знает оператор forEach (совместим ли IE с IE 9.0, см. здесь ), но если вы хотите, вы можете использовать вместо forEach, вы можете использовать for заявление, следующее:

Я отредактировал свой ответ, добавлю проверку объекта данных, если это массив

if (data != null && Array.isArray(data)) {
    var dataRow = [];
    for (var i = 0; i < data.length; i++) {
        var row = data[i];
        for (var j = 0; j < columns.length; i++) {
            var column = columns[i];

            dataRow.push(row[column].toString());
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...