javascript indexOn ne fonctionne pas comme prévu avec array
Je suis -1 à partir de myarray.indexOf(element)
même lorsque l'élément semble être dans myarray.
Voici quelques extraits de code:
function createChangeRecord( old_array, new_array ) {
var nds = new_array.slice(0,new_array.length);
var el, idx;
if (...) {
...
} else if ( old_array.length==new_array.length ) {
for ( var i=0; i<old_array.length; i++ ) {
el = old_array[i];
idx = nds.indexOf(el);
if ( idx!=(-1) ) {
...
} else {
var a = "el: " + el + "; nds: " + nds + "; nds.indexOf(el): " + nds.indexOf(el);
alert( a );
...
}
}
...
}
...
}
L'alerte m'indique que les ad ne contiennent en effet des el mais l'alerte en cas d'incendie lors de l'idx==-1, ce qui ne devrait être vrai quand nds ne contient pas de el.
Je sais que je n'ai pas donné assez d'informations pour déterminer le problème dans mon cas, mais peut-être que quelqu'un peut me dire quelques raisons qui peuvent provoquer ce problème?
Les réponses à une question similaire a suggéré d'utiliser jQuery inArray() au lieu de indexOf, mais je veux savoir pourquoi indexOf ne fonctionne pas. D'autres ont suggéré que indexOf est pour les chaînes de caractères, pas des tableaux, mais ce n'est pas vrai de la de documents en ligne que je peux trouver.
source d'informationauteur baixiwei
Vous devez vous connecter pour publier un commentaire.
indexOf
fonctionne et fait ce que vous dites il n'.Par exemple (pour démontrer à partir d'une console):
Si vous obtenez cette erreur, cela peut signifier que vous avez mélangé la source et la destination (le tableau avant de le point est une recherche en cours), ou vous avez un autre subtile erreur de programmation (comme vous n'êtes pas en comparant le tableau que vous pensez que vous êtes à la comparaison).
Lorsque vous utilisez indexOf(valeur) sur un Tableau, il vous renvoie le index de la valeur dans le tableau.
Vous devriez vérifier ce que vous obtenez à partir de el avec un typeof(el)