js算法-数据排序

文章描述了一个JavaScript函数`setArr`,它接受一个字符串数组,按照字符串中的数据类型(首字母)和序号(从第二个字符开始)进行排序。使用了`sort`和`localeCompare`方法实现复杂排序。
摘要由CSDN通过智能技术生成

 题目描述假设有如下字符串“A12”,其中“A”表示数据类型(A-Z),“12”表示数据序号(0-9)。
现在需要对一组数据先按照数据序号再按照数据类型进行排序。
例如:["B3" "D2""F1" "A9" "D12""A2""C1""Z0""B1"=>["Z0" "B1""C1""F1" "A2""D2" "B3" "A9""D12"]

let arr= ["B3", "D2", "F1", "A9", "D12", "A2", "C1", "Z0", "B1"]
function setArr(arr) {
    let arrObj = []
    let obj = {}
    arr.forEach(e => arrObj.push({all:e,num: e[0], num2: e.substring(1, e.length)}))
    arrObj.sort((a,b) => a.num2-b.num2)
    arrObj.forEach(e => {
        if(obj[e.num2]) obj[e.num2].push(e)
        else obj[e.num2] = [e]
    })
    for(let x in obj) {
        for (var i = 0; i < obj[x].length; i++) {//控制比较的轮数
               //每一轮比较的次数元素的个数减去当前是第几轮
               for (var j = 0; j < obj[x].length-i-1; j++) {
                   if(obj[x][j]['num'].localeCompare(obj[x][j+1]['num'])>0)
                   {
                        var swap=obj[x][j];
                        obj[x][j]=obj[x][j+1];
                        obj[x][j+1]=swap;
                   }
               } 
            }
    }
    arrObj = []
    for(let x in obj){
        obj[x].forEach(e => arrObj.push(e.all))
    }
    console.log(arrObj)
};
setArr(["B3","D2","F1","A9","D12","A2","C1","Z0","B1"])

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值