在React JS中按日期排序数组 [英] Sort array by dates in React JS

查看:57
本文介绍了在React JS中按日期排序数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个对象数组如下:

 让cars = [
{id:20 ,里程:41300,制造:高尔夫,initialRegistration:09/02/2010},
{id:21,里程:51300,制造:帕萨特 ,initialRegistration:06/04/2012},
{id:22,里程:61300,make:Audi,initialRegistration:02/01/2018},
{id:23,里程:20300,make:Touran,initialRegistration:17/09/2013​​},
{id:24,里程: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());

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

 高尔夫 -  09/02/2010 
帕萨特 - 06/04/2012
奥迪 - 02/01/2018
途安 - 17/09/2013
Polo - 26/07/2014

这里是小提琴。

解决方案

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

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

 让汽车= [{id:20,里程:41300,制造:高尔夫,initialRegistration:09/02/2010},{id:21,里程 :51300,make:Passat,initialRegistration:06/04/2012},{id:22,里程:61300,make:Audi,initialRegistration:02/01 / 2018},{id:23,里程:20300,make:Touran,initialRegistration:17/09/2013},{id:24,里程:10300, make:Polo,initialRegistration:26/07/2014}]; let sortedCars1 = cars.sort((a,b)=> new Date(... a.initialRegistration.split('/') .reverse()) - 新日期(... 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()));;

 让汽车= [{id:20,里程:41300,制造:高尔夫,initialRegistration:09/02/2010},{id:21,里程 :51300,make:Passat,initialRegistration:06/04/2012},{id:22,里程:61300,make:Audi,initialRegistration:02/01 / 2018},{id:23,里程:20300,make:Touran,initialRegistration:17/09/2013},{id:24,里程:10300, make:Polo,initialRegistration:26/07/2014}]; let sortedCars1 = cars.sort((a,b)=> a.initialRegistration.split('/')。reverse()。join ().localeCompare(b.initialRegistration.split( '/')反向()加入()。));执行console.log(sortedCars1);  


I have an array of objects as follows :

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"}
];

And I want to sort it by initialRegistration.

I tried to do it as follows :

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());

But none of these attempts did not work. The results that I get is :

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

Here is fiddle.

解决方案

Use Date constructor and do something like this.

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);


Or by string comparison using String#localeCompare after reversing the date string.

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);

这篇关于在React JS中按日期排序数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆