2014-09-10 26 views
0

地圖方法的錯誤是我的代碼,它在所有瀏覽器中工作,除了IE 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; 

我怎樣才能解決它在所有的瀏覽器。

編輯:錯誤:對象不支持屬性或方法「地圖」

+0

你使用的是哪個版本的jquery?版本1.x支持較舊的IE版本。 – Esko 2014-09-10 11:26:03

+0

我已經使用[kendo]/[2014.1.416] /jquery.min.js這是1.9.1 kendo的自定義版本 – kamiar3001 2014-09-10 11:28:19

+0

錯誤:對象不支持屬性或方法'map' – kamiar3001 2014-09-10 11:28:57

回答

1

要調用本地陣列的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鍵總是號(和你經歷所有的),你可以去除具有這樣的代碼的地圖功能:

var acc = 0; 

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

var sum = acc % 11; 

希望它有幫助。

+0

我知道它不支持,但你的代碼返回2,但get和reduce函數的總和值返回1,實際上它的結果是不同的。 – kamiar3001 2014-09-10 11:56:50

+0

@ kamiar3001在忘記在代碼的那部分上添加'input [x]'(我只是使用'X')之前,所以也許這就是爲什麼它不起作用。輸入中的值是什麼,所以我可以測試它? – 2014-09-10 12:00:42

+0

這裏是我的字符串值「0453657941」。當它碰到兼容性按鈕時它不會再工作。 acc值是NaN,但在IE 11中它的工作原理是一樣的。 – kamiar3001 2014-09-10 12:03:18