我写了以下内容:
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");
然而,当alert(finalArray)
警告"{score:33,index:0},{score:0,index:1}"
时,{{1}}警告什么都没有(即警报框出现,但没有任何说明)。
有人可以告诉我为什么会这样吗?
非常感谢
答案 0 :(得分:1)
您将percentageScores
设置为一个数字。然后,您尝试迭代到length
属性,当您执行undefined
时,它会为您提供percentageScores.length
,因此for循环永远不会迭代。然后使用空数组进行警报,其toString
生成空字符串。
你可能想要这个:
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;
};