有如下数字字符串:174,176,177,178,179,180,183,189,190,期待结果:174,176~180,183,189~190想不出怎么处理,有什么思路或者代码示例,谢谢!!
1 回答
浮云间
TA贡献1829条经验 获得超4个赞
昨天有童鞋指出输出结果不对,一看逻辑确实是有点问题
原答案已修改,代码更简洁,逻辑更清晰,并已注释:
var arr = [174, 176, 177, 178, 179, 180, 183, 189, 190]
function group(list) {
list = list.sort()
var tmp = []
list.forEach((item, index) => {
var prev = list[index - 1] //前一项
if (prev && item === prev + 1) {//有相邻前一项
if (typeof tmp[tmp.length - 1] === 'number') {//输出数组最后一项是数字
tmp[tmp.length - 1] = prev + '~' + item //拼接成字符串
} else {//输出数组最后一项是字符串
tmp[tmp.length - 1] = tmp[tmp.length - 1].split('~')[0] + '~' + item // 替换字符串最后的数字
}
} else {//没有前一相邻项或者没有前一项
tmp.push(item)
}
})
return tmp
}
console.log(group(arr))
添加回答
举报
0/150
提交
取消