IE11中的Array.map()“语法错误”,映射多个JSON对象字段

时间:2018-06-07 10:28:20

标签: javascript arrays angularjs internet-explorer-11

我有以下angularjs功能,可在Chrome,FF,Safari中使用,但不适用于IE11:

var dataListDecision = [];

$scope.readDataList = function ()
{
    dataListDecision = results.data.map(el => ({
        idApplication: el['Application Reference'],
        field: 'Decision',
        newValue: el['Decision Outcome']
    }))
 };

在IE11I中出现“SCRIPT1002:语法错误”的控制台错误,并突出显示“=>”。

我搜索了一个解决方案并找到了这个问题/答案:Error with Array.map() in IE11

但这并没有解决我从现有JSON Object数组中选择多个字段来创建另一个JSOn Object数组的映射。

我试图通过以下方式实现此解决方案:

dataListDecision = results.data.map(function (el) {
   return
    ({
        idApplication: el['Application Reference'],
        field: 'Decision',
        newValue: el['Declaration Outcome'],
        idUser: '0'
    })
})

这会停止所有错误,但会导致数组填充正确数量的对象,但每个对象不包含任何数据,只是“未定义”。

1 个答案:

答案 0 :(得分:3)

IE不是ES6语法的忠实粉丝,因此您通过删除箭头符号正确修复了它。然而

JavaScript会自动将;插入其认为需要的位置。

在您的代码中

dataListDecision = results.data.map(function (el) {
   return
    ({
      ...

它会在;之后插入return,将其转换为return;,这就是您的结果未定义的原因

要解决这个问题,只需将其写为:

dataListDecision = results.data.map(function (el) {
   return ({
     ...