将reduce函数转换为与IE一起使用
Posted
技术标签:
【中文标题】将reduce函数转换为与IE一起使用【英文标题】:Convert reduce function to work with IE 【发布时间】:2017-12-30 06:47:14 【问题描述】:好的,几个月前我得到了一些帮助,想出了一个解决方案来保持数组中元素的计数:Loop through multiple array and keep count of each element
这个解决方案对我来说非常有效,直到我意识到它使用的是 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 中运行,那就太好了!
【问题讨论】:
【参考方案1】: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
【讨论】:
谢谢!我知道不支持箭头函数,但没有意识到解构也不支持。【参考方案2】:移除解构。
cur.ProductHandlingTypes.map((obj) => obj.Name).forEach(...
【讨论】:
以上是关于将reduce函数转换为与IE一起使用的主要内容,如果未能解决你的问题,请参考以下文章
将 NPM 项目转换为与浏览器兼容的 JavaScript 文件?
如何使用 Google S2 Converter 将 markdown() 中的链接转换为与 favicon 链接?
如何将 CKEditor 的 MIME 转换为与 NotesClient 上的外观相同?