Javascript:为什么我的代码什么都没提醒?

时间:2009-11-07 17:28:37

标签: javascript math alert

我写了以下内容:

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}}警告什么都没有(即警报框出现,但没有任何说明)。

有人可以告诉我为什么会这样吗?

非常感谢

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;
};