写了太多的循环了,暂时未想到特别好的方法
let str; while(str = readline()){ getCode(str); } function getCode(str) { let resMap = new Map(); let keyArr = []; let valueArr = []; for(let i=0; i<parseInt(str); i++){ let strArr = readline().split(' '); //判断输入值 if(parseInt(strArr[0])<0 || parseInt(strArr[0])>11111111 || parseInt(strArr[1])<1 || parseInt(strArr[1])>100000){ throw new Error('输入值错误'); } keyArr.push(strArr[0]); valueArr.push(strArr[1]); } //将值进行升序排序 for(let i=0; i<keyArr.length; i++){ for(let j=i+1;j<keyArr.length;j++){ if(parseInt(keyArr[i])>parseInt(keyArr[j])){ let tempa = keyArr[i]; keyArr[i] = keyArr[j]; keyArr[j] = tempa; let temp = valueArr[i]; valueArr[i] = valueArr[j]; valueArr[j] = temp; } } } // console.log(keyArr) // console.log(valueArr) //key相同进行累加 for(let i=0; i<keyArr.length; i++){ if(resMap.has(keyArr[i])){ let newValue = resMap.get(keyArr[i]) * 1 + parseInt(valueArr[i]); resMap.set(keyArr[i],newValue); }else{ resMap.set(keyArr[i],valueArr[i]); } } //输出 for(let obj of resMap.entries()){ console.log(obj.join(' ')) } }