2009-11-07 10 views
0

J'ai écrit ce qui suit:Javascript: Pourquoi mon code est-il en alerte?

var pages=["[www.facebook.com] Facebook is cool. ","[www.bbc.co.uk] British broadcasting corporation. "]; 

function findScoreC2(s){ 
    var scores=[]; 
    var percentageScores=[]; 
    var contentsArray=[]; 
    s=s.toLowerCase(); 
    for(i=0;i<pages.length; i++){ 
    contentsArray=pages[i].substring(pages[i].indexOf("]")+1,pages[i].lastIndexOf(" ")); 
    var lowerCaseContents=(pages[i].substring(pages[i].indexOf("]")+1,pages[i].lastIndexOf(" "))).toLowerCase(); 
    scores[i] =(lowerCaseContents.split(s)).length-1 
    }; 

    percentageScores=(scores[i]/contentsArray[i].length) * 100; 
    var finalArray=[]; 

    for(i=0;i<percentageScores.length;i++){ 
    finalArray.push("{score:"+percentageScores[i]+",index:"+i+"}") 
    }; 
    alert(finalArray); 
} 


findScoreC2("facebook"); 
quand il doit alerter "{score:33,index:0},{score:0,index:1}"

cependant alert(finalArray) alertes à rien (soit une zone d'alerte arrive, mais il ne dit rien).

Quelqu'un pourrait-il m'expliquer pourquoi cela pourrait être?

Merci beaucoup

+0

Je ne peux pas voir le code correctement, vous devez peut-être modifier votre question –

+0

Même je ne pouvais pas le voir quand je ne connecté Une fois connecté , J'étais capable de. Je ne sais pas pourquoi .. mais pour une raison quelconque c'est le cas. –

Répondre

1

Vous définissez percentageScores à un certain nombre. Vous essayez ensuite d'itérer jusqu'à sa propriété length, ce qui vous donne undefined lorsque vous faites percentageScores.length, de sorte que la boucle for n'itére jamais. Vous alertez alors avec un tableau vide, dont toString produit la chaîne vide.

Vous voulez sans doute ceci:.

for(i=0;i<pages.length; i++){ 
    contentsArray=pages[i].substring(pages[i].indexOf("]")+1,pages[i].lastIndexOf(" ")); 
    var lowerCaseContents=(pages[i].substring(pages[i].indexOf("]")+1,pages[i].lastIndexOf(" "))).toLowerCase(); 
    scores[i] =(lowerCaseContents.split(s)).length-1 
    percentageScores[i]=(scores[i]/contentsArray[i].length) * 100; 
}; 
+0

Merci pour votre réponse. Je viens de faire un essai car j'ai réalisé à peu près en même temps que vous écriviez que la ligne pourcentageScores était en dehors de la boucle for, donc j'ai changé le code pour l'inclure, et dans le for-loop à la fin, changé pour itérer jusqu'à scores.length (plutôt que des scores en pourcentage). Maintenant, il alerte "{score: indéfini, index: 0}, {score: indéfini, index: 1}" mais je ne vois pas quel est le problème maintenant – Deacon

+0

avez-vous ajouté le [i] au pourcentageScores lors de l'indexation dans ça? – Claudiu

+0

Je n'ai pas, mais après avoir lu votre réponse et fait ainsi, cela fonctionne! bien presque. maintenant je reçois "{score: 100, index: 0}" ce qui semble indiquer qu'il pense que la valeur de contentsArray [0] est 1, alors qu'en fait c'est 3 ("Facebook is cool.")? Merci beaucoup pour votre aide, je l'apprécie. – Deacon