js如何处理数字字符串是连续或单独显示

有如下数字字符串:

174,176,177,178,179,180,183,189,190,

期待结果:

174,176~180,183,189~190

想不出怎么处理,有什么思路或者代码示例,谢谢!!


哔哔one
浏览 409回答 1
1回答

浮云间

昨天有童鞋指出输出结果不对,一看逻辑确实是有点问题原答案已修改,代码更简洁,逻辑更清晰,并已注释: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))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript