2014-09-10 2 views
0

ici est mon code et il fonctionne dans tous les navigateurs sauf IE 7:méthode carte tableau bug soit 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; 

Comment je peux résoudre à travailler dans tous les navigateurs.

Edit: Erreur: objet ne prend pas en charge la propriété ou méthode « carte »

+0

Quelle version de jquery utilisez-vous? Version 1.x prend en charge les anciennes versions d'IE. – Esko

+0

J'ai utilisé [kendo]/[2014.1.416] /jquery.min.js qui est 1.9.1 version personnalisée pour kendo – kamiar3001

+0

Erreur: L'objet ne supporte pas la propriété ou la méthode 'map' – kamiar3001

Répondre

1

Vous appelez map méthode de la matrice native, et IE7 does not have it implemented (et la même chose se produit avec reduce). Ceci est une solution en utilisant les fonctions jQuery qui devrait fonctionner:

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; 

Encore plus, si les clés de input sont toujours des nombres (et vous passez par tous), vous pouvez supprimer la fonction de carte ayant le code comme celui-ci :

var acc = 0; 

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

var sum = acc % 11; 

Espérons que cela aide.

+0

Je sais qu'il ne supporte pas mais votre code renvoie 2 mais la valeur de somme pour get et réduire la fonction retourne 1 et en fait il est différent dans le résultat. – kamiar3001

+0

@ kamiar3001 avant que j'oublie d'ajouter 'l'entrée [x]' sur cette partie du code (j'utilisais juste 'X'), alors peut-être que c'est pourquoi ça ne marche pas. Quelles sont les valeurs en entrée afin que je puisse le tester? –

+0

voici ma valeur de chaîne "0453657941". il ne fonctionne pas encore quand il a frappé le bouton de compatibilité. la valeur d'acc est NaN mais dans IE 11 cela fonctionne la même chose. – kamiar3001