reduce()方法中的JavaScript解构不适用于Internet Explorer 11?

时间:2018-01-05 09:17:47

标签: javascript arrow-functions destructuring

我使用JavaScript reduce()方法来计算有多少条目具有相同的值。

如果我在Firefox 52浏览器中使用该代码,一切正常。但是,如果我使用Internet Explorer 11中的代码,调试器告诉我,脚本中存在错误:



const data = [{
    'jahr': '2017',
    'monat': '3'
  },
  {
    'jahr': '2017',
    'monat': '3'
  },
  {
    'jahr': '2017',
    'monat': '4'
  }
];

map = new Map,
  ergebnisMonat = data.reduce((r, {
    jahr,
    monat
  }) => {
    var datum = [monat, jahr].join('-');
    if (!map.has(datum)) {
      map.set(datum, {
        datum,
        anzahl: 0
      });
      r.push(map.get(datum));
    }
    map.get(datum).anzahl++;
    return r;
  }, []);

console.log(ergebnisMonat);




  

SCRIPT1003:':'预期

调试器告诉我":"预计在这里:

ergebnisMonat = data.reduce((r, {
        jahr**here ERROR**,
        monat

从版本9开始,reduce()方法与IE兼容。所以我不知道为什么它在Firefox中工作而不在IE 11中。任何想法?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

根据 destructuring docs ,它在IE中根本不受支持,因此

data.reduce((r, {
    jahr,
    monat
  })

不受支持, Arrow functions 在IE中没有支持,因此您需要使用传统的功能定义

ergebnisMonat = data.reduce(function(r, obj){
    var datum = [obj.monat, obj.jahr].join('-');
    if (!map.has(datum)) {
      map.set(datum, {
        datum,
        anzahl: 0
      });
      r.push(map.get(datum));
    }
    map.get(datum).anzahl++;
    return r;
  }, []);