为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哔哔one 2019-02-20 17:16:48
有如下数字字符串: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))


查看完整回答
反对 回复 2019-02-22
  • 1 回答
  • 0 关注
  • 408 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信