题目描述
对一个整数数组,将数组中的元素替换成它们排序(从大到小排序)后的序号,规定序号从4开始编号(包括4)并依次递增(元素相等则序号相等),返回这个数组
代码
function test (arr){
const cloneArr = arr.slice().sort((a,b)=>b-a)
const map = []
if(arr.length <=0){
return arr
}
//序号4开始
let seq = 4
//第一个直接下标存4
map.push({
seq:seq,
value:cloneArr[0]
})
for(let i = 1;i<cloneArr.length;i++){
if(cloneArr[i]==cloneArr[i-1]){
map.push({
seq:seq,
value:cloneArr[i]
})
}else{
map.push({
seq:++seq,
value:cloneArr[i]
})
}
}
arr.forEach((v,index,arrr)=>{
map.forEach((mv)=>{
v===mv.value &&(arrr[index] = mv.seq)
})
})
return arr
}
test( [8, 9, 7, 6, 7, 8, 9])