2009-11-07 3 views
0

Я написал следующее:Javascript: Почему мой код ничего не предупреждает?

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

Может ли кто-нибудь просветить меня, почему это может быть?

Большое спасибо

+0

Я не могу увидеть код правильно, возможно, вам необходимо изменить ваш вопрос –

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

Спасибо за ваш ответ. Я только что дал эту попытку, как я понял, примерно в то же время, когда вы написали назад, что строка percentScores находится вне цикла for, поэтому я изменил код, чтобы включить его, и в конце цикла в конце, изменил его на итерацию до scores.length (а не процентные оценки). Теперь он предупреждает «{оценка: undefined, index: 0}, {score: undefined, index: 1}», но я не могу понять, в чем проблема: – Deacon

+0

вы добавили [i] к проценту штрихов при индексировании внутрь? – Claudiu

+0

Я этого не сделал, но, просто прочитав ваш ответ и сделал это, он работает! Ну, почти. теперь я получаю «{score: 100, index: 0}», который, по-видимому, указывает, что он считает, что значение contentArray [0] равно 1, когда на самом деле это 3 («Facebook классный»)? Большое спасибо за вашу помощь, я ценю это. – Deacon

Смежные вопросы