Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript进行排序_Javascript_Sorting - Fatal编程技术网

使用Javascript进行排序

使用Javascript进行排序,javascript,sorting,Javascript,Sorting,我正在尝试让我的页面按事件id排序。目前,我的代码编写方式将获得第一条记录,例如,将是6719,然后是6700、6701、6702等。它应该是这样的6719、6718、6716,等等。让我知道我需要如何重写这段代码,以便按直接降序排序 function() { this.blockEvent(); this.sort(function(a, b) { return a.event_id < b.event_id ? 1 : 1 }); thi

我正在尝试让我的页面按事件id排序。目前,我的代码编写方式将获得第一条记录,例如,将是6719,然后是6700、6701、6702等。它应该是这样的6719、6718、6716,等等。让我知道我需要如何重写这段代码,以便按直接降序排序

function() {
    this.blockEvent();
    this.sort(function(a, b) {
        return a.event_id < b.event_id ? 1 : 1
    });
    this.unblockEvent();
}
function(){
this.blockEvent();
this.sort(函数(a,b){
返回a.event\u id
如果
事件id
s相等,则需要返回
0
。不必根据值返回三个不同的值,只需返回它们的差异(如果它们都是数字)

this.sort(function(a, b) {
    return b.event_id - a.event_id;
});
这是因为JavaScript函数接受一个函数,该函数返回一个数字作为输出,该数字应该是

  • 如果第一个值小于第二个值,则为负值

  • 如果第二个值大于第一个值,则为正值

  • 零,如果两者相同

  • 例如,如果您有对象列表,如下所示

    var objects = [{
        "event_id": 6701
    }, {
        "event_id": 6719
    }, {
        "event_id": 6710
    }, {
        "event_id": 6703
    }];
    
    console.log(objects.sort(function(a, b) {
        return a.event_id - b.event_id;
    }))
    
    您可以按升序对它们进行排序,如下所示

    var objects = [{
        "event_id": 6701
    }, {
        "event_id": 6719
    }, {
        "event_id": 6710
    }, {
        "event_id": 6703
    }];
    
    console.log(objects.sort(function(a, b) {
        return a.event_id - b.event_id;
    }))
    
    输出

    [ { event_id: 6701 },
      { event_id: 6703 },
      { event_id: 6710 },
      { event_id: 6719 } ]
    
    [ { event_id: 6719 },
      { event_id: 6710 },
      { event_id: 6703 },
      { event_id: 6701 } ]
    
    如果要按降序对它们进行排序,只需将比较的数字颠倒过来即可

    console.log(objects.sort(function(a, b) {
        return b.event_id - a.event_id;
    }));
    
    输出

    [ { event_id: 6701 },
      { event_id: 6703 },
      { event_id: 6710 },
      { event_id: 6719 } ]
    
    [ { event_id: 6719 },
      { event_id: 6710 },
      { event_id: 6703 },
      { event_id: 6701 } ]
    

    第四行代码在做什么?返回1或1?这仍然不起作用,它仍然让我比最高记录的最高记录高出一个记录。所以它仍然在做6719670167036704etc@Steven好吧,我不知道。您能编辑您的问题并显示实际数据吗?对不起,您的代码不起作用,我对您的示例做了一些错误。Thanks@Steven很高兴能帮上忙:)