簡體   English   中英

未知的Javascript錯誤

[英]Unknown Javascript error

我試圖將數組降序排列。

這是我當前的代碼:

for(var i = 0; i < scoresArray.length; i){
function swap(a, b) {
            var temp = scoresArray[a].score;
            scoresArray[a] = scoresArray[b].score;
            scoresArray[b] = temp;
}
    for(var x = 0; x < scoresArray.length; x++){
        if(scoresArray[x].score < scoresArray[++x].score){
            console.log(x);
            swap(x, ++x);
        }
    }
}
return scoresArray.content;

這是輸入數組:

  [
    { url: 'www.lboro.ac.uk', score: 6 },
    { url: 'www.xyz.ac.uk', score: 3 },
    { url: 'www', score: 8 } ]

(應該是)輸出數組:

  [{ url: 'www.xyz.ac.uk', score: 3 },
    { url: 'www.lboro.ac.uk', score: 6 },
    { url: 'www', score: 8 } ]

就像@Douglas所說的那樣,使用array.sort(compareFunction)使這個變得更容易:

var scoresArray = [
    { url: 'www.lboro.ac.uk', score: 6 },
    { url: 'www.xyz.ac.uk', score: 3 },
    { url: 'www', score: 8 } ];
scoresArray.sort(function(a,b) {
    return a.score - b.score;
});

注意,由於scoresArray[i].score是數字,因此可以使用return a.score - b.score 在更一般的情況下(例如,如果它們是字符串),則可以使用

scoresArray.sort(function(a,b) {
    if(a.score > b.score) return 1;
    if(a.score < b.score) return -1;
    return 0;
});

交換功能不起作用,它僅用分數編號替換了scoresArray中的值。 同樣重要的是要知道, ++x的值改變x 我認為您的意思是x + 1

這大致可行:

var scoresArray = [
    { url: 'www.lboro.ac.uk', score: 6 },
    { url: 'www.xyz.ac.uk', score: 3 },
    { url: 'www', score: 8 } ];

function swap(a, b) {
    var temp = scoresArray[a];
    scoresArray[a] = scoresArray[b];
    scoresArray[b] = temp;
}

for(var i = 0; i < scoresArray.length; i++) {
    for(var x = 0; x < scoresArray.length - 1; x++) {
        if (scoresArray[x].score > scoresArray[x + 1].score) {
            swap(x, x + 1);
        }
    }
}

console.log(scoresArray);

但是使用array.sort會更好:

var scoresArray = [
    { url: 'www.lboro.ac.uk', score: 6 },
    { url: 'www.xyz.ac.uk', score: 3 },
    { url: 'www', score: 8 } ];

scoresArray.sort(function(a, b) {
    return b.score - a.score;
});

console.log(scoresArray);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM