Sort array by dates in React JS

前端 未结 3 1718
遥遥无期
遥遥无期 2020-12-31 23:24

I have an array of objects as follows :

let cars = [
    {\"id\":20,\"mileage\":41300,\"make\":\"Golf\", initialRegistration:\"09/02/2010\"}, 
    {\"id\":21         


        
3条回答
  •  旧时难觅i
    2021-01-01 00:18

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

提交回复
热议问题