[1,2,3,4,6,7,9,13,15]=>['1->4','6->7','9','13','15']
参考答案:
本题是一道比较简单的数组处理题目,主要有两个处理步骤:
x->y
,比如 [1,2,3,4] 转成 ['1->4']
具体的实现代码如下:
1function shortenArray(arr) { 2 // 处理边界 3 if (!Array.isArray(arr) || arr.length <= 1) { 4 return arr; 5 } 6 7 // 记录结果 8 const result = []; 9 10 // 记录连续数字的开始位置 11 let start = 0; 12 // 记录连续数字的结束位置 13 let last = 0; 14 15 function pushArr(arrStart, arrEnd) { 16 if (arrStart === arrEnd) { 17 result.push(arr[arrStart].toString()); 18 } else { 19 result.push(`${arr[arrStart]}->${arr[arrEnd]}`); 20 } 21 } 22 23 // 一次循环获取结果 24 for (let i = 1; i < arr.length; i++) { 25 const temp = arr[i]; 26 if (arr[last] + 1 === temp) { 27 last = i; 28 } else { 29 pushArr(start, last); 30 start = i; 31 last = i; 32 } 33 } 34 35 // 处理剩余数据 36 pushArr(start, last); 37 38 return result; 39} 40 41shortenArray([1, 2, 3, 4, 6, 7, 9, 13, 15]); // ['1->4','6->7','9','13','15']
最近更新时间:2024-07-20