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

JavaScript destructuring in reduce() method not working with Internet Explorer 11?

我使用 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: ':' expected

调试器告诉我这里应该是“:”:

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

reduce() 方法从版本 9 开始与 IE 兼容。所以我不知道为什么它在 Firefox 中有效,而在 IE 11 中无效。知道吗?

感谢您的帮助。

根据 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;
  }, []);