如果我有一個具有屬性的對象數組,並且我想按特定屬性對對象進行排序,那麼我將如何能夠執行此操作?例如,假設我有一堆news
對象,每個對象具有date
屬性。如何使用對象屬性對對象數組進行排序
我將如何能夠按日期對JavaScript中的每個對象進行排序?
如果我有一個具有屬性的對象數組,並且我想按特定屬性對對象進行排序,那麼我將如何能夠執行此操作?例如,假設我有一堆news
對象,每個對象具有date
屬性。如何使用對象屬性對對象數組進行排序
我將如何能夠按日期對JavaScript中的每個對象進行排序?
如果陣列是ARR:
arr.sort(function(a,b) {
return (a.date < b.date ? -1 : (a.date > b.date ? 1 : 0));
});
您需要將自己的功能傳遞給.sort()
,這樣的事情:
someArray.sort(function(a, b) {
if (a.date < b.date)
return -1;
else if (a.date > b.date)
return 1;
return 0;
});
你的功能只需要能夠比較給定任意兩個對象並返回負值或正值,具體取決於哪一個來自第一個或零,如果他們是平等的。 .sort()
函數將負責其餘部分。
這意味着您可以對您喜歡的任何屬性進行排序,甚至(可選)爲第一個屬性相等的情況引入第二排序。您也可以通過否定您的返回值來控制升序與降序。
糟糕,可能應該更多關注頂部的那條橫幅,告訴我另一個答案已經發布。噢,我會毫不猶豫地離開我的回答,因爲我和代碼一起給了一個簡短的解釋。 – nnnnnn
你可以提供一個sort function到陣列的一種排序方法:
// Sample data
var newsArray = [
{date: '2010/8/12'},
{date: '2012/8/10'},
{date: '2011/8/19'}
];
// Sorting function
function sortNewsArray(arr) {
return arr.sort(function(a, b) {
return new Date(a.date) - new Date(b.date);
}
);
}
提供的日期字符串可以簡單地轉換爲日期這一點。如果沒有,只需重新格式化,以便它們可以在數據或排序功能中使用。
初始順序:
排序順序:
這已被問了很多很多次。 –