按日期排序对象数组

时间:2017-01-06 13:12:53

标签: javascript html

例如

myArr= [
    {name:"Joe",  id:3,  date: "2012.10.12"},
    {name:"Ed",   id:43, date: "2012.02.12"},
    {name:"Mark", id:22, date: "2012.02.11"}
];

那么如何按日期对此数组进行排序?

这只是一个小例子,但它就像数组中的1000个对象。 我在互联网上搜索过并发现了一些使用sort()函数的例子,但它在我的大数组中不起作用。

1 个答案:

答案 0 :(得分:6)

假设日期只是代码中格式化的字符串,您可以这样做:

myArr.sort( (a,b) => a.date.localeCompare(b.date) )

sort方法将每次需要比较数组的两个元素时调用的函数作为参数。因此,要按特定字段排序,您将传递一个函数,该函数比较传入的两个对象的那些字段。

排序比较器函数必须返回一个指示正确顺序的特殊值:如果第一个参数(通常称为a)应该在第二个参数(b)之前,则返回-1;如果b出现在a之前,则为1;如果它们相等则为0(因此顺序并不重要)。幸运的是,已经有一种方法可以比较字符串并返回sort的正确值(如果你在a上调用它并传递b作为参数):{{1 }}。由于您要比较的字段是字符串,因此您只需在比较函数的字段中调用该字段即可返回适当的排序值。