0

私は次のように書いています:

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

なぜこれが起こるのかについて誰かが私に教えてもらえますか?

どうもありがとう

4

1 に答える 1

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;
};
于 2009-11-07T17:34:26.397 に答える