js如何二维数组排序

下面是我自己在项目中用到的二维数组排序;对于中文的排序用到了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":"你"}]'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值