簡體   English   中英

如何按其屬性按降序排列此對象數組

[英]How can I sort this array of objects by both its properties in descending order

我有一個包含年/月的整數表示的對象數組:

[
   {
      year : 2014,
      month : 10
   },
   { 
     year : 2011,
     month : 6
   },
   {
     year : 2014,
     month : 11
   }
]

我需要按月和年對它們進行排序,以便最新的對象是第一個。

目前我正在進行兩種排序以實現這一目標:

        items.sort(function(a, b){
            if (a.month === b.month) {
                return 0;
            } else if (b.month > a.month) {
                return 1;
            }
            return -1;
        });

        items.sort(function(a, b){
            if (a.year === b.year) {
                return 0;
            } else if (b.year > a.year) {
                return 1;
            }
            return -1;
        });

首先,我按月分類,然后按年份排序。

雖然這很好用,但看起來有點hacky。 如何使用單個排序功能正確排序此數組?

提前致謝。

你可以這樣做:

items.sort(function(a, b){
  return a.year === b.year ? b.month - a.month : b.year - a.year;
});

JavaScript的排序就像這樣

  1. 如果收到正數,則第一項大於第二項

  2. 如果收到負數,則第一項小於第二項

  3. 如果它們都相同則為零。

所以,我們首先比較這些年份。 如果它們相同,我們將返回第二個月和第一個月之間的差異。 如果年份不一樣,那么我們將返回年份之間的差異。

    items.sort(function(first, second) {
        if (first.year === second.year) {
            return second.month - first.month;
        }
        return second.year - first.year;
    });

產量

[ { year: 2014, month: 11 },
  { year: 2014, month: 10 },
  { year: 2011, month: 6 } ]

像這樣:

items.sort(function(a, b) {
  return a.year - b.year || a.month - b.month;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM