将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一起使用的主要内容,如果未能解决你的问题,请参考以下文章

将 Javascript Reduce 函数转换为 C#

将 NPM 项目转换为与浏览器兼容的 JavaScript 文件?

如何使用 Google S2 Converter 将 markdown() 中的链接转换为与 favicon 链接?

如何将 CKEditor 的 MIME 转换为与 NotesClient 上的外观相同?

将轮廓(MatplotLib 或 OpenCV)转换为与原始大小相同的图像

如何将 TIMESTAMPS 格式转换为与 Impala 兼容