我知道還有大量其他類似的問題與這個區域有關,但他們沒有一個答案已經奏效。在我的情況下,我有以下代碼,我試圖按降序排列他們的分數記錄數組。無法讀取未定義的屬性「分數」
function score(string, pattern){
string = string.toLowerCase();
pattern = pattern.toLowerCase();
var position = 0;
var count = 0;
while (true) {
var index = string.indexOf(pattern, position);
if (index == -1) break;
count++;
position = index + 1;
}
return(count);
}
function urlScores(web, pattern){
var records = {};
var results = [];
var n = 0;
for(var i = 0; i < web.length; i++){
n = score(web[i].content, pattern);
if(n != 0){
records.url = web[i].url;
records.score = n;
results[results.length] = {url: records.url, score: records.score};
}
}
return(JSON.stringify(results));
}
function rankedScores(web, pattern){
results = JSON.parse(urlScores(web, pattern));
var temp = 0;
var tempUrl = '';
while(counter < results.length){
for(var i in results){
numbers[numbers.length] = results[i].score;
if(results[i].score < results[i + 1].score){
temp = results[i].score;
tempUrl = results[i].url;
results[i] = {url: results[i+1].url, score: results[i+1].score};
results[i + 1] = {url: tempUrl, score: temp};
}
}
counter++;
}
alert(JSON.stringify(results));
}
最後一個功能是什麼給我的問題。如果用戶運行以下內容:
var web = [{url:「www.southampton.ac.uk」,內容:「南安普敦大學提供學位課程和世界級的研究測試。」 },{url:「www.xyz.ac.uk」,內容:「另一項大學考試測試」},{url:「www」,內容:「另一項大學考試」}];
rankingScores(web,'test');
它應該輸出相同的數組,但以降序排列。相反,我得到一個無法讀取未定義的屬性'分數'。任何人都可以看到我出錯的地方嗎?
謝謝
也,我們不允許使用.sort()!
謝謝!我可以看到你如何修復它!我刪除了「數字」,因爲這是以前試圖解決它的問題,並且不需要。很有幫助! – air6199 2014-11-06 19:37:42
歡迎您... – 2014-11-06 19:40:08