代码之家  ›  专栏  ›  技术社区  ›  Dev 404

将reduce函数转换为使用IE

  •  2
  • Dev 404  · 技术社区  · 8 年前

    好的,几个月前我得到了一些帮助,提出了一个解决方案来保持数组中元素的计数: Loop through multiple array and keep count of each element

    这个解决方案对我来说非常有效,直到我意识到它正在使用 ES6 IE 11 .我试图将其转换为使用函数,而不是箭头函数,这样它可以在所有浏览器中工作,但存在一些问题。

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

    如果有人可以指导我什么需要改变这里,使它在IE中工作,那将是伟大的!

    2 回复  |  直到 8 年前
        1
  •  4
  •   Miguel    8 年前

    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
    }, {});
    

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

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

        2
  •  1
  •   Ruan Mendes    8 年前

    删除去结构化。

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