数组映射方法bug,即7

时间:2014-09-10 11:24:35

标签: javascript jquery internet-explorer-7

这是我的代码,它可以在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 个答案:

答案 0 :(得分:1)

您正在调用本地数组的map方法,IE7 does not have it implementedreduce也是如此)。这是一个使用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的键始终是数字(并且您经历了所有键),则可以删除具有以下代码的地图函数:

var acc = 0;

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

var sum = acc % 11;

希望它有所帮助。