-3

我有以下对象数组:

eventJsonArr[0] = { eventName: "Event One", eventYear "2012"}
eventJsonArr[1] = { eventName: "Event Two", eventYear "2011"}
eventJsonArr[2] = { eventName: "Event Three", eventYear "2012"}
eventJsonArr[3] = { eventName: "Event Four", eventYear "2013"}
eventJsonArr[4] = { eventName: "Event Five", eventYear "2010"}
eventJsonArr[5] = { eventName: "Event Six", eventYear "2011"}

无论如何我可以根据每个对象的属性对这个数组进行排序吗?简而言之:我所需要的只是能够首先按eventYear降序对对象数组进行排序,然后按eventName升序排序。

我想我需要它来准确地模拟 SQL 会做什么,如果eventName并且eventYear是列,数组的每个索引都是行,并且它包含ORDER BY eventYear DESC, eventName ASC.

我需要将其与“页面预览”一起使用,因此它的行为必须与我设置的查询实际数据库的页面完全相同(如上所述)。

附加信息:

我实际上是.push()在 jquery 循环中一次一个地读取值.each(),所以如果需要做一些事情,因为我实际上是在将值添加到数组中,而不是实际对完整值的数组进行排序,这可以完成(虽然,我不确定那里需要的逻辑)。

这是我在发布此问题之前尝试过的:

eventJsonArr.sort() //As a start, just to see what it did.

接着:

evenJsonArr.sort(function(a, b) { //I got the basic function to sort, which it did.
    a.eventYear - b.eventYear
});

除了这个功能,我真的找不到任何与我的情况相关的东西。至少不是我发现的。

以下是我试图研究以帮助我的一些页面:

4

1 回答 1

4

“我所需要的只是能够先按顺序对对象数组进行排序eventYeardescending然后再按eventName顺序ascending排序。”

eventJsonArr.sort(function(a, b) {  //     eventYear DESC
    return a.eventYear !== b.eventYear ? b.eventYear - a.eventYear :
                                         a.eventName.localeCompare(b.eventName);
});                                 //     eventName ASC
于 2013-11-05T17:01:35.483 回答