按特定键排序对象数组

时间:2015-03-31 12:05:31

标签: javascript arrays sorting

我有这些对象:

var obj1 = {
  endDateInMs : 125000001
};

var obj2 = {
  endDateInMs: 125000000
};

var obj3 = {
  endDateInMs: 125000002
};

和包含这些对象的数组:

var array1 = [obj1, obj2, obj3];

我想按对象的日期对array1进行排序。我希望在数组末尾有更新的第一个和最旧的。

我执行以下操作但它确实有效:

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];

2 个答案:

答案 0 :(得分:1)

不会只是

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

FIDDLE

答案 1 :(得分:0)

使用开源项目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>';