// sort使用的排序方法
// 传入对象数组用于排序的对象的属性,升序/降序
function compare(property, sortType = "asc") {
debugger
// 如果不是 asc,desc,不做下一步比较
if (!(sortType === "desc" || sortType === "asc")) {
return;
}
return function (object1, object2) {
// 取得对象属性值
let value1 = object1[property];
let value2 = object2[property];
// 如果该对象不存在这个属性,也不做后续比较
if (!value1 || !value2) {
return;
}
// 如果两个属性取得的值不是一个类型的就不用比较了
if (typeof (value1) == typeof (value2)) {
// 判断 传入的属性值 是number还是 string
if (typeof (value1) === 'number') {
// 如果是升序
if (sortType === "asc") {
return value1 - value2;
} else {
// 如果是降序
return value2 - value1;
}
} else if (typeof (value1) === 'string') {
// 如果是升序
if (sortType === "asc") {
return value1.toString().localeCompare(value2);
} else {
// 如果是降序
return value2.toString().localeCompare(value1);
}
} else {
// 其它类型就不排序了
return;
}
} else {
return;
}
}
}
// 通用方法,需要传入 需要排序的对象数组、对象属性、排序方式
export function objectArraySort(array, property, sortType) {
debugger
// 如果不是对象数组用这个方法,返回的是undefined
if (!(array instanceof Array)) {
return;
}
return array.sort(compare(property, sortType));
}
【对象数组根据属性排序】
于 2023-12-06 09:06:03 首次发布