我有以下对象数组:
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
});
除了这个功能,我真的找不到任何与我的情况相关的东西。至少不是我找到的。
以下是我试图研究的一些页面来帮助我:
答案 0 :(得分:4)
“我需要的是能够先按
eventYear
按descending
顺序排序对象数组,然后按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