对象不支持 IE 11 'forEach'的属性或方法



>我有以下代码片段

data.forEach(function (row) {
var dataRow = [];
columns.forEach(function (column) {
dataRow.push(row[column].toString());
})

这给了我错误data.forEach(function (row) { .什么应该替代这个?如何解决?

对于任何使用document.querySelectorAll('..').forEach()并在 IE 11 中遇到此问题的人说"forEach 不是一个函数",我在 reddit 上发现了一个效果很好的黑客:

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

这运行良好,是 3 行代码而不是 polyfill。

@JoeTaras在他的回答中暗示了这一点(是的,IE自IE9以来确实Array.forEach(,但我仍然认为我的回答增加了价值,并将帮助其他用户。

IE11知道forEach语句(从IE 9.0开始是否兼容IE,请参阅此处(,但是如果需要,可以使用for语句代替forEach可以使用语句,如下所示:

我已经编辑了我的答案,如果是一个数组,则添加对数据对象的检查

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());
}
}
}

最新更新