/*
* @description 根据某个字段实现对json数组的排序
* @param array 要排序的json数组对象
* @param field 排序字段(此参数必须为字符串)
* @param order 排序规则 asc升序 desc降序 normal不排序
* @return array 返回排序后的json数组
*/
export const jsonSort = function(array, field, order) {
//数组长度小于2 或 没有指定排序字段 或 不是json格式数据 或 不排序
if (
array.length < 2 ||
!field ||
typeof array[0] !== "object" ||
order === "normal"
)
return array;
//数字类型排序 - 升序
if (typeof array[0][field] === "number") {
array.sort(function(x, y) {
return x[field] - y[field];
});
}
//字符串类型排序 - 升序
if (typeof array[0][field] === "string") {
array.sort(function(x, y) {
return x[field].localeCompare(y[field]);
});
}
//倒序
if (order === "desc") {
array.reverse();
}
return array;
};
扩展:
/*
* @description 根据某个字段实现对json数组的排序,或对简单数据的排序
* @param array 要排序的json数组对象
* @param field 排序字段(此参数必须为字符串)
* @param order 排序规则 asc升序 desc降序 normal不排序
* @return array 返回排序后的json数组
*/
export const arrSort = (array, field, order) => {
//数组长度小于2
if (array.length < 2) return array;
if (field) {
// 指定排序字段
//数字类型排序
if (typeof array[0][field] === "number") {
array.sort(function (x, y) {
return x[field] - y[field];
});
}
//字符串类型排序
if (typeof array[0][field] === "string") {
array.sort(function (x, y) {
return x[field].localeCompare(y[field]);
});
}
} else {
// 未指定排序字段
//数字类型排序
if (typeof array[0] === "number") {
array.sort(function (x, y) {
return x - y;
});
}
//字符串类型排序
if (typeof array[0] === "string") {
array.sort(function (x, y) {
return x.localeCompare(y);
});
}
}
//倒序
if (order === "desc") {
array.reverse();
}
return array;
};