【问题标题】:Convert reduce function to work with IE将reduce函数转换为与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 中运行,那就太好了!

【问题讨论】:

    标签: javascript internet-explorer ecmascript-6 reduce


    【解决方案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(...
    

    【讨论】:

      猜你喜欢
      • 2020-06-23
      • 2019-12-25
      • 2021-07-08
      • 2020-08-24
      • 2021-12-27
      • 2022-09-15
      • 2014-01-28
      • 2018-12-26
      • 2013-10-17
      相关资源
      最近更新 更多