例如
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()
函数的例子,但它在我的大数组中不起作用。
答案 0 :(得分:6)
假设日期只是代码中格式化的字符串,您可以这样做:
myArr.sort( (a,b) => a.date.localeCompare(b.date) )
sort
方法将每次需要比较数组的两个元素时调用的函数作为参数。因此,要按特定字段排序,您将传递一个函数,该函数比较传入的两个对象的那些字段。
排序比较器函数必须返回一个指示正确顺序的特殊值:如果第一个参数(通常称为a
)应该在第二个参数(b
)之前,则返回-1;如果b
出现在a
之前,则为1;如果它们相等则为0(因此顺序并不重要)。幸运的是,已经有一种方法可以比较字符串并返回sort
的正确值(如果你在a
上调用它并传递b
作为参数):{{1 }}。由于您要比较的字段是字符串,因此您只需在比较函数的字段中调用该字段即可返回适当的排序值。