转换 reduce 函数以与 IE 一起使用
Convert reduce function to work with IE
好吧,几个月前我得到了一些帮助,想出了一个解决方案来保持数组中元素的数量:
在我意识到它使用的是 IE 11
不支持的 ES6
之前,这个解决方案对我来说非常有效。我试图将它转换为使用函数而不是箭头函数,这样它就可以在所有浏览器上工作,但我遇到了一些问题。
这是在 IE 中不工作的当前代码:
var b = data.reduce((acc, cur) => {
cur.ProductHandlingTypes.map(({ Name }) => Name).forEach(n => acc[n] = (acc[n] || 0) + 1);
return acc;
},
{});
如果有人可以指导我了解此处需要更改的内容以使其在 IE 中运行,那就太好了!
去掉解构
cur.ProductHandlingTypes.map((obj) => obj.Name).forEach(...
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
好吧,几个月前我得到了一些帮助,想出了一个解决方案来保持数组中元素的数量:
在我意识到它使用的是 IE 11
不支持的 ES6
之前,这个解决方案对我来说非常有效。我试图将它转换为使用函数而不是箭头函数,这样它就可以在所有浏览器上工作,但我遇到了一些问题。
这是在 IE 中不工作的当前代码:
var b = data.reduce((acc, cur) => {
cur.ProductHandlingTypes.map(({ Name }) => Name).forEach(n => acc[n] = (acc[n] || 0) + 1);
return acc;
},
{});
如果有人可以指导我了解此处需要更改的内容以使其在 IE 中运行,那就太好了!
去掉解构
cur.ProductHandlingTypes.map((obj) => obj.Name).forEach(...
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