使用 javascript 中的 date-fns 库按键名对对象数组进行排序
Sorting the array of objects by key name using date-fns library in javascript
此处数组包含 name 以及 updatedTimeStamp 属性。
我想根据 updatedTimeStamp 属性.
对数组进行排序
所以我特此使用 date-fns 库,我只想使用这个库,
我可以不用这个库,但这是我使用这个库的要求。
我可以根据 updatedTimeStamp 进行排序,但它不是 return 名称 我如何 return 名称 属性 以及 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)
我会这样做。您可以传递自己的函数 returns 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))
我可以不用这个库,但这是我使用这个库的要求。
为什么?您拥有的日期格式可以使用正常的内置排序进行排序
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)
此处数组包含 name 以及 updatedTimeStamp 属性。 我想根据 updatedTimeStamp 属性.
对数组进行排序所以我特此使用 date-fns 库,我只想使用这个库, 我可以不用这个库,但这是我使用这个库的要求。
我可以根据 updatedTimeStamp 进行排序,但它不是 return 名称 我如何 return 名称 属性 以及 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)
我会这样做。您可以传递自己的函数 returns 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))
我可以不用这个库,但这是我使用这个库的要求。
为什么?您拥有的日期格式可以使用正常的内置排序进行排序
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)