那就需要遍历数组,查找连续的序列,用一个标识初始为第一个元素,参考代码:
function conseq(){
var array = [1,2,3,6,7,8,10];
const last = []; // 存储最终结果的数组
let cur=array[0]; // 查找最长连续序列的初始值
for(let i=1;i<array.length;i++) {
if(array[i]==cur+i) { // 当前元素是连续的,则继续
continue;
}
// 不连续,则向目标数组存储一个 1-cur的 字符串
if(cur != array[i-1]) {
last.push(cur+'-'+array[i-1]);
} else { //只有一个数
last.push(array[i-1]);
}
cur=array[i]; // 重置统计标识
}
console.log(last)}}
var arr = [1,2,3,4,6,8,9,10];
var result = [];
var num = arr[0];
for (var i = 1; i <= arr.length; i++) {
if (i==arr.length || arr[i]!==arr[i-1]+1) {
result.push(num+(num===arr[i-1]?"":"-"+arr[i-1]));
num = arr[i];
}
}
alert(result);
借助左右两个下标,找出连续的字串。断开时,重置俩下标
function func(arr) {
let left = right = 0;
let res = [];
for(let i = 1; i < arr.length; i++){
if(arr[i] != arr[right] + 1) {
res.push(arr.slice(left, i));
left = right = i;
} else {
right++;
}
}
res.push(arr.slice(left));
return res;
}