2009-07-01 11 views
2
var allProductIDs = [5410, 8362, 6638, 6758, 7795, 5775, 1004, 1008, 1013, 1014, 1015, 1072, 1076, 1086, 1111, 1112, 1140]; 

lastProductID = 6758; 

pour une raison quelconque je reçois -1 ou je suppose que ce qui équivaut à ne pas trouvé pour cela:problème indexOf sur tableau JavaScript

alert(allProductIDs[allProductIDs.indexOf(lastProductID)); 

Je ne peux pas comprendre la vie de mon pourquoi parce qu'il devrait trouver 6758 et ce serait l'indice 3. Si c'est l'indice 3 alors je devrais revenir 6758, je pense.

+0

Pour ce que ça vaut, oui -1 signifie pas trouvé. – Nosredna

Répondre

5

.indexOf() est utilisé pour les chaînes, pas pour les tableaux. En utilisant JavaScript standard, vous devrez parcourir le tableau jusqu'à trouver une correspondance, ou utiliser la fonction inArray() de jQuery.

jQuery inArray()

+0

agréable. Je n'étais pas au courant de ça. Y a-t-il une pénurie à utiliser jQuery? comme pouvez-vous utiliser $ .inArray() ou quelque chose comme ça? – PositiveGuy

+0

essayé cela, mais il boucle à l'infini et me donne un -1 à chaque fois sacrément: for (i = 0; i 0) {AddIndex = productIDs.length + 1; } alert (allProductIDs [jQuery.inArray (lastProductID) + i]); productIDs [addIndex] = allProductIDs [jQuery.inArray (lastProductID) + i]; } – PositiveGuy

+0

il lance aussi mon programme dans une boucle infinie! bizarre. – PositiveGuy

0

Vérifiez votre syntaxe aussi. Il vous manque un support d'extrémité .. ']'

+0

qui était une erreur de publication. – PositiveGuy

3
var allProductIDs = [5410, 8362, 6638, 6758, 7795, 5775, 1004, 1008, 1013, 1014, 1015, 1072, 1076, 1086, 1111, 1112, 1140]; 

lastProductID = 6758; 

for (i in allProductIDs) 
{ 
    if (allProductIDs[i] == lastProductID) { 
     alert(allProductIDs[i] + " is at index " + i); 
     break; 
    } 
} 

ou

i = $.inArray(lastProductID, allProductIDs) 
alert(allProductIDs[i] + " is at index " + i); 
+0

toute idée pourquoi mon programme serait lancé dans une boucle infinie avec ce qui suit: pour (i = 0; i 0) {addIndex = productIDs.length + 1; } //alert(allProductIDs[jQuery.inArray(lastProductID) + i]); productIDs [addIndex] = allProductIDs [jQuery.inArray (lastProductID) + i]; } – PositiveGuy