IE 11 Script1028 在函数内传播,已尝试 Array.prototype.push.apply

IE 11 Script1028 on spread within function, tried Array.prototype.push.apply

我有一个 .NET 应用程序可以在 Chrome、FF 和 Edge 中完美运行。我被要求改造我们的一些 javascript 以在 IE 11 中工作。我已经将兼容性更改为 <META http-equiv="X-UA-Compatible" content="IE=11" />

我收到了关于大括号内特定展开函数的 Script1028。我已经 运行 几次搜索并尝试以各种形式添加 Array.prototype.push.apply 'fix' 以替换 IE 11 的传播功能。我 运行 通过 Babeljs.io但是好像不知道怎么替换spread函数

这里是破解代码:

    createDataTree = function createDataTree(dataset) {
  //console.log(bookmarkfolders);
  var hashTable = Object.create(null);
  dataset.forEach(function (aData) {
    return hashTable[aData.DroppableID] = { ...aData,
      children: []
    };
  });
  var dataTree = [];
  dataset.forEach(function (aData) {
    if (aData.parentID != "") hashTable[aData.parentID].children.push(hashTable[aData.DroppableID]);
else dataTree.push(hashTable[aData.DroppableID]);
  });
  return dataTree;
}

我希望其中有一个简单的部分是我遗漏的,并且有人可以快速向我展示如何改进此传播功能以实现 IE 11 兼容性。提前致谢。

你如何包含 babel 来转译你的代码?

object rest/spread properties 是 ECMAScript 2018 的一部分,IE 不支持。你可以使用像 Babel 这样的转译器。通过 运行:

安装 @babel/plugin-proposal-object-rest-spread
npm install --save-dev @babel/plugin-proposal-object-rest-spread

然后根据 usage.

将其作为插件包含在内

有类似问题的也可以参考 and

另一个选项是你可以定义你自己的函数,你可以参考这个线程中的