我想排序和替换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