求大佬帮忙解答一下以下题目

图片说明

那就需要遍历数组,查找连续的序列,用一个标识初始为第一个元素,参考代码:

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;
}