下面是我自己在项目中用到的二维数组排序;对于中文的排序用到了Unicode码进行排序,有个缺点就是中文只对第一个字排序,有需求者可以修改代码实现
/**
* @description:降序 排序根据哪那个字段,适用于二维数组排序
* @param {*}arr 要排序的数组
* @param {*}key 需要排序的键名
* @return {*}
*/
const downsort = (arr = [], key) => {
let tmp = JSON.parse(JSON.stringify(arr)); //深拷贝一份
tmp.sort(function(a, b) {
//判断是不是数字,数字则不处理,不是数字则转为对应Unicode码
a = !isNaN(Number(a[key])) ? a[key] : a[key].charCodeAt(0);
b = !isNaN(Number(b[key])) ? b[key] : b[key].charCodeAt(0);
return a - b;
});
return tmp;
};
/**
* @description: 升序 排序根据哪那个字段,适用于二维数组排序
* @param {*}arr 要排序的数组
* @param {*}key 需要排序的键名
* @return {*}
*/
const upsort = (arr = [], key) => {
let tmp = JSON.parse(JSON.stringify(arr)); //深拷贝一份
tmp.sort(function(a, b) {
a = !isNaN(Number(a[key])) ? a[key] : a[key].charCodeAt(0);
b = !isNaN(Number(b[key])) ? b[key] : b[key].charCodeAt(0);
return b - a;
});
return tmp;
};
调用方法
/**
第一个参数为数组,第二个为需要排序的键名
*/
let a = upsort([{'name':'你'},{'name':'好'}],'name')
//'[{"name":"好"},{"name":"你"}]'