传奇服务器如何做网站,网站开发赚钱吗,别墅设计图纸,别人能打开的网站我打不开文章目录 1、问题2、示例3、解决方法#xff08;0#xff09;错误示范——两个for循环遍历#xff08;1#xff09;方法1(递归)#xff08;2#xff09;方法2#xff08;推荐#xff09; 1、问题 实现一个函数#xff0c;判断一组数字是否连续。当出现连续数字的时候以… 文章目录 1、问题2、示例3、解决方法0错误示范——两个for循环遍历1方法1(递归)2方法2推荐 1、问题 实现一个函数判断一组数字是否连续。当出现连续数字的时候以‘-’输出。 2、示例 如 const arr [ 2, 3, 4, 7, 8, 9, 10,13,15,16] 期望结果[“2-4”, “7-10”, 13, 15-16] 3、解决方法
0错误示范——两个for循环遍历
如果第n项-n1项 1说明连续就返回连续的值但是这样无法输出7-10这种多个连续的数据只能输出2-4这种单个连续的数据。如果使用 for循环需要定义来获取初始值获取7-10中的10。可惜的是我依旧没有写出这种写法。
1方法1(递归)
const arr [ 2, 3, 4, 7, 8, 9, 10,13,15,16]
const newArr [];
function getArray(arr, index, target) {if (!arr.length) returnconst item arr[index]const item2 arr[index1]if (item 1 ! item2) {if (target) {newArr.push(${target}-${item})getArray(arr.slice(index1), 0)} else {newArr.push(item)getArray(arr.slice(1), 0)}} else {getArray(arr, index1, target || item)}
}
getArray(arr, 0)
console.log(newArr)2方法2推荐
const arr [ 2, 3, 4, 7, 8, 9, 10,13,15,16]
function getArray(arr){var start // 1:存储第一项的数据var newArr [] // 2: 存储返回的新数据arr.forEach((item,index){// 3。1第一项1 第二项 并且 第一项-1 ! 第0项if(item 1 arr[index1] item -1 ! arr[index-1]){// 说明左边不连续右边连续也就是第一项start item} else if(item 1 ! arr[index1] item -1 arr[index-1]){// 3.2item1不等于item的后一项 并且 item-1等于item的前一项// 说明当前遍历的第一项start和当前item是连续的但是和后面一项不连续相当于7-10的10// 关键点如果是7-10的话中间的8、9都没有进行对比直接不管这步将返回的前后控制好就有效果newArr.push(start - item)}else if(item 1 ! arr[index1] item -1 ! arr[index-1]){// 3.3item1不等于item的后一项 并且 item-1不等于item的前一项// 说明当前的item值和前一项后一项都不连续所以单独加入相当于示例的13newArr.push(item)}})console.log(newArr);
}
getArray(arr);