我想排序和替换javascript中的连续性整数

var arrayvals = [1,2,3,10,4,6,12,9];
arrayvals.sort(function(a, b) {
  return a - b;
});


我想这样打印:
[1-4,6,9-10,12]

任何想法如何解决这个问题?

最佳答案

对数组进行排序后,只需遍历它即可检查连续性。例如:

var arrayvals = [1,2,3,4,6,9,10,12];
var output = [];

for(var i=0; i<arrayvals.length; i++){
    var min = arrayvals[i];
    var cur = arrayvals[i];
    while(cur + 1 === arrayvals[i + 1]){
        cur = arrayvals[i + 1];
        i++;
    }
    if(cur !== min){
        output.push(min + '-' + cur);
    }else{
        output.push(cur);
    }
}

console.log(output.join(','));


这假定处理数组中至少有几个,但是您应该了解一般概念。我创建了一个小提琴,您可以使用here

10-08 04:38