【问题标题】:使用 javascript 中的 date-fns 库按键名对对象数组进行排序
【发布时间】:2022-01-23 12:54:56
【问题描述】:

Here 数组包含 name 以及 updatedTimeStamp 属性。 我想根据 updatedTimeStamp 属性对数组进行排序。

所以我特此使用 date-fns 库,我只想使用这个库, 我可以不用这个库,但这是我使用这个库的要求。

我可以根据 updatedTimeStamp 进行排序,但它不返回名称我如何返回 name 属性以及 updatedTimeStamp。

import { compareDesc } from "date-fns";

let arr = [
  {
    name:"abc",
    updatedTimeStamp: "2021-12-06 14:09:00.304464"
  },
  {
   name:"xyz",
    updatedTimeStamp: "2021-12-14 13:41:58.708262"
  },
  {
    name:"thomas",
    updatedTimeStamp: "2021-12-06 15:39:09.365793"
  },
  {
    name:"Robin",
    updatedTimeStamp: "2021-12-14 09:15:42.141081"
  },
  {
    name:"Jobin",
    updatedTimeStamp: "2021-12-14 12:50:29.723421"
  },
  {
    name:"Tobin",
    
  }
];
const objArr = arr.map(i => i.updatedTimeStamp).sort(compareDesc)

【问题讨论】:

    标签: javascript arrays date-fns


    【解决方案1】:

    我会这样做。您可以传递自己的函数,该函数返回 comparsefunc

    import {
      compareDesc
    } from "date-fns";
    
    let arr = [{
        name: "abc",
        updatedTimeStamp: "2021-12-06 14:09:00.304464"
      },
      {
        name: "xyz",
        updatedTimeStamp: "2021-12-14 13:41:58.708262"
      },
      {
        name: "thomas",
        updatedTimeStamp: "2021-12-06 15:39:09.365793"
      },
      {
        name: "Robin",
        updatedTimeStamp: "2021-12-14 09:15:42.141081"
      },
      {
        name: "Jobin",
        updatedTimeStamp: "2021-12-14 12:50:29.723421"
      }
    ];
    // careful since this modifies the original array 
    arr.sort((a, b) => compareDesc(a.updatedTimeStamp, b.updatedTimeStamp))
    
    // to not mutate the original you can do this
    const objArr = [...arr].sort((a, b) => compareDesc(a.updatedTimeStamp, b.updatedTimeStamp))

    【讨论】:

      【解决方案2】:

      我可以不用这个库,但这是我使用这个库的要求。

      为什么?您拥有的日期格式可以使用普通的内置排序进行排序

      let arr = [
        {
          name:"abc",
          updatedTimeStamp: "2021-12-06 14:09:00.304464"
        },
        {
         name:"xyz",
          updatedTimeStamp: "2021-12-14 13:41:58.708262"
        },
        {
          name:"thomas",
          updatedTimeStamp: "2021-12-06 15:39:09.365793"
        },
        {
          name:"Robin",
          updatedTimeStamp: "2021-12-14 09:15:42.141081"
        },
        {
          name:"Jobin",
          updatedTimeStamp: "2021-12-14 12:50:29.723421"
        },
        {
          name:"Tobin",
          
        }
      ];
      const objArr = arr.slice(0).sort((a,b) => {
       if (a.updatedTimeStamp > b.updatedTimeStamp) return 1
       if (a.updatedTimeStamp < b.updatedTimeStamp) return -1
       return 0
       })
      console.log(objArr)

      【讨论】:

        猜你喜欢
        • 2013-12-03
        • 2021-06-06
        • 2016-12-23
        • 2021-10-30
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        • 2020-07-11
        相关资源
        最近更新 更多