转换减少功能与IE

问题描述:

好的工作,所以我有一些帮助一对夫妇个月前拿出一个解决方案,以保持元素的计数的数组:Loop through multiple array and keep count of each element转换减少功能与IE

该解决方案完全为我工作,直到我意识到它使用ES6,这不被IE 11支持。我试图将其转换为使用函数而不是箭头函数,以便它可以在所有浏览器上工作,但是遇到一些问题。

下面是当前的代码并不在IE浏览器:

var b = data.reduce((acc, cur) => { 
    cur.ProductHandlingTypes.map(({ Name }) => Name).forEach(n => acc[n] = (acc[n] || 0) + 1); 
    return acc; 
}, 
{}); 

如果有人能指导我什么需要改变了这里,以便它在IE工程,将是伟大的!

IE 11不支持箭头函数[1],也不解构[2],所以将其转换为ES5语法:

var b = data.reduce(function(acc, cur) { 
    cur.ProductHandlingTypes 
    .map(function(obj) { 
     return obj.Name 
    }) 
    .forEach(function(n) { 
     return acc[n] = (acc[n] || 0) + 1 
    }) 

    return acc 
}, {}); 

[1] http://caniuse.com/#feat=arrow-functions

[2] http://kangax.github.io/compat-table/es6/#test-destructuring

+0

谢谢!我知道箭头功能没有得到支持,但没有意识到解构不够好。 – Quiver

删除拆分。

cur.ProductHandlingTypes.map((obj) => obj.Name).forEach(...