ie 7的数组映射方法错误

Array map method bug with ie 7

本文关键字:方法 错误 映射 数组 ie      更新时间:2023-09-26

这是我的代码,它适用于除IE7:之外的所有浏览器

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"

您正在调用本机数组的map方法,而IE7没有实现它(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的键总是数字(并且你遍历了所有的数字),你可以删除具有如下代码的映射函数:

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

希望能有所帮助。