JavaScript按几个月排序项目列表

A19*_*919 5 javascript

我正在玩js脚本.如何按月对列表项进行排序.最好的方法是什么?

var dataCollection = [
        { values: { Month: { displayValue: "August" }, Sum: "10" } },
        { values: { Month: { displayValue: "February" }, Sum: "25" } },
        { values: { Month: { displayValue: "July" }, Sum: "35" } }
    ];
Run Code Online (Sandbox Code Playgroud)

我希望得到

dataCollection = [
            { values: { Month: { displayValue: "February" }, Sum: "25" } },
            { values: { Month: { displayValue: "July" }, Sum: "35" } },
            { values: { Month: { displayValue: "August" }, Sum: "10" } }
        ];
Run Code Online (Sandbox Code Playgroud)

ble*_*lex 14

您可以通过按正确的顺序列出所有月份的列表,并根据它们对数组进行排序来实现:

var dataCollection = [
  { values: { Month: { displayValue: "August" }, Sum: "10" } },
  { values: { Month: { displayValue: "February" }, Sum: "25" } },
  { values: { Month: { displayValue: "July" }, Sum: "35" } }
];

sortByMonth(dataCollection);

console.log(dataCollection);

function sortByMonth(arr) {
  var months = ["January", "February", "March", "April", "May", "June",
  	        "July", "August", "September", "October", "November", "December"];
  arr.sort(function(a, b){
      return months.indexOf(a.values.Month.displayValue)
           - months.indexOf(b.values.Month.displayValue);
  });
}
Run Code Online (Sandbox Code Playgroud)

  • @federer您可以通过多种方式进行操作,例如可以以相反的顺序编写月份,或者在声明后执行“ months.reverse();”,或在sort函数中交换“ a”和“ b” (2认同)