代码之家  ›  专栏  ›  技术社区  ›  kamiar3001

ie 7的数组映射方法错误

  •  0
  • kamiar3001  · 技术社区  · 10 年前

    这是我的代码,它适用于除IE 7以外的所有浏览器:

    var sum = [0, 1, 2, 3, 4, 5, 6, 7, 8]
            .map(function (x) { return parseInt(input[x]) * (10 - x); })
            .reduce(function (x, y) { return x + y; }) % 11;
    

    我如何在所有浏览器中解决它。

    编辑: 错误:对象不支持属性或方法“map”

    1 回复  |  直到 10 年前
        1
  •  1
  •   Ruben R Aparicio    10 年前

    你在打电话 map 本机阵列的方法,以及 IE7 does not have it implemented (同样的情况也发生在 reduce ). 这是一个使用jQuery函数的解决方案,它应该可以工作:

    var acc = 0;
    
    $.each($.map([0, 1, 2, 3, 4, 5, 6, 7, 8], function(x) {
        return parseInt(input.charAt(x)) * (10 - x);
    }), function(key, value) {
        acc = acc + value;
    }); 
    
    var sum = acc % 11;
    

    更重要的是,如果 input 始终是数字(并且您要遍历所有数字),您可以删除具有如下代码的map函数:

    var acc = 0;
    
    $.each(input, function(key,value) {
        acc = acc + (parseInt(value) * (10 - key));
    });
    
    var sum = acc % 11;
    

    希望有帮助。