按特定键对对象数组进行排序

Sorting array of object by specific key

本文关键字:数组 排序 对象      更新时间:2023-09-26

我有这些对象:

var obj1 = {
  endDateInMs : 125000001
};
var obj2 = {
  endDateInMs: 125000000
};
var obj3 = {
  endDateInMs: 125000002
};

和一个包含这些对象的数组:

var array1 = [obj1, obj2, obj3];

我想按对象的日期对数组1进行排序。我想把最近的第一个和最老的放在阵列的最后。

我做了以下操作,但它不起作用:

function compare(a,b) {
                    if (a.endDateInMs < b.endDateInMs) {
                        return -1;
                    }
                    else if (a.endDateInMs > b.endDateInMs) {
                        return 1;
                    }
                }
var arrayOfHistoryForThisItem = wall_card_array[item];
                    var newArraySorted = arrayOfHistoryForThisItem.sort(compare);
                    var lastElement = newArraySorted[0];

这难道不是吗

array1.sort(function(a, b) {
    return b.endDateInMs - a.endDateInMs;
});

FIDDLE

使用开源项目http://www.jinqJs.com,很容易。

请参阅http://jsfiddle.net/tford/epdy9z2e/

    //Use jsJinq.com open source library
var obj1 = {
  endDateInMs : 125000001
};
var obj2 = {
  endDateInMs: 125000000
};
var obj3 = {
  endDateInMs: 125000002
};
var array1Ascending = jinqJs().from(obj1, obj2, obj3).orderBy('endDateInMs').select();
var array1Descending = jinqJs().from(obj1, obj2, obj3).orderBy([{field:'endDateInMs', sort:'desc'}]).select();
document.body.innerHTML = '<pre>' + JSON.stringify(array1Ascending, null, 4) + '</pre>';
document.body.innerHTML += '<pre>' + JSON.stringify(array1Descending, null, 4) + '</pre>';