繁体   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