Object.map Lambda代码可在Chrome,Firefox和IE中运行?

时间:2019-07-12 12:31:33

标签: javascript angularjs internet-explorer

我无法让我的代码的这一部分在IE中工作。

它在Chrome和Firefox中运行良好,但是IE在lambda表达式上引发了“严重错误”。因此该页面在IE中会中断,但可用于其他浏览器。

该代码的目的是在将javascript时间戳加载到页面上的可编辑字段之前,将其过滤掉。它还仅从每个对象中选择所需的数据,而不是加载所有数据。而且我不确定IE中的问题是什么以及如何解决。

ContractsService.getRefRFRInformation()
.then(function (results) {
    var rfrInfo = results.data.map(x => ({ 
      rfrInformationID: x.rfrInformationID,
      fiscalYear: x.fiscalYear,
      rfrNumber: x.rfrNumber,
      startDate: ($filter('date')(new Date(x.startDate), 'MM/dd/yyyy')),
      endDate: x.endDate ? ($filter('date')(new Date(x.endDate), 'MM/dd/yyyy')) : "",
      modificationDate: x.modificationDate, modifiedBy: x.modifiedBy
    }))
    $scope.refRFRInfo = rfrInfo;

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

尝试签入caniuse.com,它们具有大多数JS功能的支持表,以及实际上有多少浏览器支持它们。如您所见,IE中似乎根本不支持lambda函数,因此请回到ES5或使用babel来自动编译您的代码。

答案 1 :(得分:1)

Lambda或箭头功能是ES6规范的一部分,Internet Explorer不支持。 this MDN link中提到了这一点。您需要更改代码并以旧方式传递函数。

results.data.map(function(x) { ... });

有关更多详细信息,您可以检查this link中作为ES6一部分引入的功能。 Internet Explorer或其他旧版浏览器将不支持这些功能。