Javascript排序数组两次(不同的排序方法)

时间:2018-02-24 18:54:16

标签: javascript sorting

我有一个数组,在页面加载时按照我想要的方式对数组进行排序,具体取决于显示具有未来日期的对象的当前日期,然后显示具有过去日期的对象,我们可以调用此datesToPlay。

我有两个单选按钮来调用方法来对同一个数组进行排序,并且在页面加载时,它对数组的排序非常好,我上面提到过。问题是当我使用其他排序方法对数组进行排序时,createdAt只是按创建日期对数组进行排序。这种方法排序很好,但当我按其他收音机按dateToPlay排序时,它不会对数组进行排序。

function SortByPlayTime(a, b){
var currentDate = new Date();
    if(lastDateOfObjectsInArray > currentDate){
        if(a.attributes.start >= currentDate){
            if(a.attributes.start > b.attributes.start && b.attributes.start >= currentDate)
                return 1;
            else
                return -1;
        } else if(b.attributes.start >= currentDate){
            if(b.attributes.start > a.attributes.start)
                return -1;
          else
                return 1;
     }
    else{
        if(a.attributes.start > b.attributes.start)
            return 1;
        else
            return -1;
    }
} else{
    if(a.attributes.start > b.attributes.start)
        return -1;
    else
        return 1;
}


function SortByCreation(a, b){
if(a.attributes.createdAt > b.attributes.createdAt)
    return 1;
else
    return -1;

基本上我正在做的是我有一个数组,我想要排序所有对象,这个数组大小不一,可以像1000个或更多的对象。

在函数loadArrayToShowFilters()中,我正在做的是准备一个将在表中显示的新数组(参见上面的屏幕注释)。这是因为我模仿一个表,但实际上我正在使用数组进行所有工作;这个数组总是100长度或更短。

function loadArrayToShowFilters() {
//array = the array of objects Im trying to filter
var sizeArrayToShow;
if(array.length < 100)
    sizeArrayToShow = array.length;
else
    sizeArrayToShow = 100;
arrayTableToShow = [];
//arrayTableToShow = This is the array that holds the objects that are shown on the table
for (var i = 0; i < sizeArrayToShow; i++) {
    arrayTableToShow[i] = array[i];
};

触发排序的事件:事件点击两个单选按钮。

执行实际排序的代码:在每个单选按钮的事件点击上,我只是分别执行array.sort(SortByCreation)等。

示例数据:{&#34; start&#34;:{&#34; __ type&#34;:&#34; Date&#34;,&#34; iso&#34;:&#34; 2018- 02-01T11:00:00.000Z&#34;}&#34;端&#34; {&#34; __类型&#34;:&#34;日期&#34;&#34; ISO&#34 ;: &#34; 2018-02-01T12:00:00.000Z&#34;}&#34; createdAt&#34;:&#34; 2018-01-29T20:37:51.477Z&#34;&#34; updatedAt&#34;:&#34; 2018-02-23T03:12:15.968Z&#34;&#34;的ObjectID&#34;:&#34; dSVZXFAIyf&#34;}

它基本上只是一个带有对象的数组,每个对象都有一个变量属性,包含变量start和createdAt,用于进行排序

活动:

'click #lastCreated'(event){
    orderArregloCreatedAt();
},
'click #nextToPlay'(event){
    orderArregloPlayTime();
}

function orderArregloCreatedAt() {
    array.sort(SortByCreation);
   loadArrayToShowFilters();
}

function orderArregloPlayTime() {
    array.sort(SortByPlayTime);
    loadArrayToShowFilters();
}

0 个答案:

没有答案