对数组的字母进行排序
let arr = [
{age: "asgja"},
{age: "dxcx"},
{age: "cxcx"},
{age: "assx"},
{age: "cddddc"},
{age: "rddc"},
{age: "hdddc"}
];
arr.sort((a, b) => a.age.localeCompare(b.age));
console.log(arr);
-
localeCompare() 是一个字符串方法,用于比较两个字符串并确定它们的字典顺序。
-
当 a.age.localeCompare(b.age) 返回一个负数时,表示 a.age 在字典顺序上位于 b.age 之前,因此 a 应该排在 b 的前面。
-
当 a.age.localeCompare(b.age) 返回零时,表示两个字符串相等,它们的相对顺序不会改变。
-
当 a.age.localeCompare(b.age) 返回一个正数时,表示 a.age 在字典顺序上位于 b.age 之后,因此 b 应该排在 a 的前面。
通过这种方式,数组 arr 中的对象将根据其 age 属性的字母顺序进行升序排序。
根据时间降序排序
let poolList = [
{createTime: "2024-07-11 11:57:53"},
{createTime: "2024-05-11 15:57:53"},
{createTime: "2024-01-11 15:57:53"}
]
poolList.sort((a, b) => {
const dateA = new Date(a.createTime);
const dateB = new Date(b.createTime);
return dateB - dateA; // 降序
});
-
调用 sort 方法: poolList.sort(…) 调用了数组的 sort() 方法,这会就地修改 poolList 数组,按照指定的比较函数进行排序。
-
比较函数: (a, b) => {…} 是传递给 sort() 方法的比较函数。这个函数接收两个参数 a 和 b,它们代表数组中待比较的任意两个元素。
-
日期转换: const dateA = new Date(a.createTime); 和 const dateB = new Date(b.createTime); 这两行代码将 a 和 b 对象中的 createTime 字符串转换为 Date 对象。这样可以正确地比较日期和时间。
-
返回值: return dateB - dateA; 这一行计算了 dateB 和 dateA 的时间差。如果 dateB 晚于 dateA,则返回一个正数;如果 dateB 早于 dateA,则返回一个负数;如果两者相等,则返回 0。sort() 方法利用这个返回值来决定元素的排序位置。
最终,poolList 数组会被重新组织,使得具有较晚 createTime 的元素出现在具有较早 createTime 的元素之前,实现了按时间降序排列。