【JS】简单算法题 处理数组

const str2 = [1, 2, 3, 6, 7]

    // 传入一组已排序、无重复的页码压缩成的字符串
    // · 连续的数字合并成start-end的形式
    // · 不连序的用,分割
    // · 单个数字直接输出数字
    const compacyRanges = (str) => {
        // 判空
        if (str.length === 0) return '';
        let result = [];
        let start = str[0]
        let end = str[0]
        for (let i = 1; i < str.length; i++) {
            if(str[i] === end + 1) {
                // 连续
                end = str[i]
            } else {
                // 不连序
                // 添加当前区间
                result.push(start === end ? start : `${start}-${end}`);
                // 重置start、end
                start = end = str[i];
            }
        }
        // 添加最后一个区间
        result.push(start === end ? start : `${start}-${end}`);
        return result.join(',');
    }

    console.log('res', compacyRanges(str2));

 

posted on 2026-04-04 22:05  贲风  阅读(0)  评论(0)    收藏  举报