例如
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()功能的例子,但它在我的大数组中不起作用.
假设日期只是在代码中格式化的字符串,您可以这样做:
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.由于您要比较的字段是字符串,因此您可以在比较函数的字段上调用它,以返回排序的正确值.