直接上代码:处理效果:["20~54", "125~136", "170~199", "261~300"]
function slightlyNumArr(arr, separator) {
const result = []
if (!arr || arr && arr.length === 0) {
return result;
}
let group = '';
arr.sort((a, b) => a - b).reduce((a, b, i) => {
if(b-a===1){
//相邻
if(i===1){
//开始
group=a+separator;
}
if(arr.length===(i+1)){
//结束
group+=b
result.push(group)
}
}else{
//不相邻
group+=a
result.push(group)
group=b+separator;
}
return b
})
return result
}
console.log(slightlyNumArr([20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,174,173,172,171,170,175,176,177,178,199,198,197,196,195,194,193,192,191,190,189,188,187,186,185,184,183,182,181,180,179,125,126,127,129,136,135,134,133,132,131,130,128,273,272,271,270,269,268,267,266,265,264,263,262,261,274,275,277,298,297,296,295,294,293,292,291,290,289,288,287,286,285,284,283,282,281,280,279,278,276,299,300],'~'));
// 输出结果:["20~54", "125~136", "170~199", "261~300"]