按日期排序对象数组

int*_*nal 0 html javascript

例如

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"}
];
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*eed 6

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

myArr.sort( (a,b) => a.date.localeCompare(b.date) )
Run Code Online (Sandbox Code Playgroud)

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

排序比较器函数必须返回一个指示正确顺序的特殊值:-1如果第一个参数(通常称为a)应该在第二个(b)之前; 1如果b应该来a; 如果它们相等则为0(因此顺序无关紧要).幸运的是,已经是比较字符串,并返回正确的值的方法sort(如果你在调用它a,并通过b作为参数)localeCompare.由于您要比较的字段是字符串,因此您可以在比较函数的字段上调用它,以返回排序的正确值.