如何根据两个对象属性对对象数组进行排序

How can I sort an array of objects based on two of the obects' properties?

本文关键字:对象 属性 数组 排序 两个 何根      更新时间:2023-09-26

我有以下对象数组:

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排序。

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

我需要它与

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

附加信息:

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

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

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
});

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

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

  • http://www.javascriptkit.com/javatutors/arraysort2.shtml
  • https://gist.github.com/onpubcom/1772996
  • 按日期对 Javascript 对象数组进行排序
  • 在 JavaScript 中按字符串属性值对对象数组进行排序
  • (甚至是可怕的W3学校。您可能会猜到这没有帮助)。

"我所需要的只是能够首先按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