当前位置: 首页 > 面试题库 >

在React JS中按日期对数组进行排序

令狐跃
2023-03-14
问题内容

我有一个对象数组,如下所示:

let cars = [
    {"id":20,"mileage":41300,"make":"Golf", initialRegistration:"09/02/2010"}, 
    {"id":21,"mileage":51300,"make":"Passat", initialRegistration:"06/04/2012"},
    {"id":22,"mileage":61300,"make":"Audi", initialRegistration:"02/01/2018"},
    {"id":23,"mileage":20300,"make":"Touran", initialRegistration:"17/09/2013"},
    {"id":24,"mileage":10300,"make":"Polo", initialRegistration:"26/07/2014"}
];

我想按排序initialRegistration

我尝试这样做如下:

let sortedCars = cars.sort((a, b) => Date.parse(a.initialRegistration) - Date.parse(b.initialRegistration));

let sortedCars1 = cars.sort((a, b) => new Date(a.initialRegistration) - new Date(b.initialRegistration));

let sortedCars2 = cars.sort((a, b) => new Date(a.initialRegistration).getTime() - new Date(b.initialRegistration).getTime());

但是这些尝试都没有成功。我得到的结果是:

Golf - 09/02/2010
Passat - 06/04/2012
Audi - 02/01/2018
Touran - 17/09/2013
Polo - 26/07/2014

这是小提琴。


问题答案:

使用Date构造函数并执行类似的操作。

let sortedCars1 = cars.sort((a, b) => new Date(...a.initialRegistration.split('/').reverse()) - new Date(...b.initialRegistration.split('/').reverse()));



let cars = [{

  "id": 20,

  "mileage": 41300,

  "make": "Golf",

  initialRegistration: "09/02/2010"

}, {

  "id": 21,

  "mileage": 51300,

  "make": "Passat",

  initialRegistration: "06/04/2012"

}, {

  "id": 22,

  "mileage": 61300,

  "make": "Audi",

  initialRegistration: "02/01/2018"

}, {

  "id": 23,

  "mileage": 20300,

  "make": "Touran",

  initialRegistration: "17/09/2013"

}, {

  "id": 24,

  "mileage": 10300,

  "make": "Polo",

  initialRegistration: "26/07/2014"

}];



let sortedCars1 = cars.sort((a, b) => new Date(...a.initialRegistration.split('/').reverse()) - new Date(...b.initialRegistration.split('/').reverse()));



console.log(sortedCars1);

或通过String#localeCompare将日期字符串反转后使用字符串比较。

let sortedCars1 = cars.sort((a, b) =>
  a.initialRegistration.split('/').reverse().join().localeCompare(b.initialRegistration.split('/').reverse().join()));



let cars = [{

  "id": 20,

  "mileage": 41300,

  "make": "Golf",

  initialRegistration: "09/02/2010"

}, {

  "id": 21,

  "mileage": 51300,

  "make": "Passat",

  initialRegistration: "06/04/2012"

}, {

  "id": 22,

  "mileage": 61300,

  "make": "Audi",

  initialRegistration: "02/01/2018"

}, {

  "id": 23,

  "mileage": 20300,

  "make": "Touran",

  initialRegistration: "17/09/2013"

}, {

  "id": 24,

  "mileage": 10300,

  "make": "Polo",

  initialRegistration: "26/07/2014"

}];



let sortedCars1 = cars.sort((a, b) =>

  a.initialRegistration.split('/').reverse().join().localeCompare(b.initialRegistration.split('/').reverse().join()));



console.log(sortedCars1);


 类似资料:
  • 问题内容: 我有一个包含一个称为的对象的数组,它具有诸如“日期”,“名称”等属性。 我正在对数组进行排序,如下所示: 应该将日期从新到旧排序。例如: 2016年6月30日 2016年6月29日 等等.. 但是,当我的数组包含“ 2016年7月2日”时,排序后的数组将变为: 2016年6月30日 2016年6月29日 2016年7月2日 排序后,“ 2016年7月2日”应该位于顶部,而现在位于底部?

  • 问题内容: 我有一个带有几个键值对的对象数组,我需要根据’updated_at’对它们进行排序: 这样做最有效的方法是什么? 问题答案: 您可以使用。 这是一个例子:

  • 问题内容: 我有这种格式的数组: 我想按日期的升序对它们进行排序(基于月,日和年)。最好的方法是什么? 最初,电子邮件是以MySQL日期格式获取的,因此我有可能将阵列设置为以下状态: 也许当它采用这种格式时,我可以遍历它们,删除所有(连字符)标记,使它们保留为整数,使用它们对它们进行排序,然后再次遍历它们以对其进行排序?如果有另一种方法,我会比较喜欢,因为我将为此每个用户执行3次循环。 谢谢。 编

  • 问题内容: 让我们 我想按日期和时间键对输出进行排序。 非常感谢你。 问题答案: 对于GNU排序: 按月份按第二列排序(这样,“三月”排在“四月”之前) 在数字模式下按第三列排序(因此,“ 9”位于“ 10”之前) 按第四列排序。 请参见手册中的更多详细信息。

  • 问题内容: 我正在尝试使用TreeMap按日期键在Java中对地图进行排序。这是我的代码 将含有像(例如21-3-2013)以字符串格式和外观日期。问题在于,它仅在TreeMap(mp)中存储12个键值对(每月一个),而不是预期的103(i)。有任何想法吗 ? 问题答案: 请参阅http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDat

  • 问题内容: 我有一个熊猫数据框,如下所示: 我想按它排序,但该列只是一个。 我试图将列设置为日期对象,但是遇到了一种格式不需要的格式的问题。所需的格式为等。 因此,现在我试图找出如何使numpy将“美国”日期转换为ISO标准,以便可以使它们成为日期对象,以便可以对它们进行排序。 我该如何将这些美国日期转换为ISO标准,或者我在熊猫中缺少更直接的方法? 问题答案: 您可以用来转换为日期时间对象。它带