题目描述:假设有如下字符串“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"])