letarr=[1,2,3,4,5,6,6,7,8,9,10,10,10,11,12,12,4,5]如何通过js把它切成[1,2,3,4,5,6][6,6][6,7,8,9,10][10,10,10][10,11,12][12,12][12,4,5]规则:1、相邻不同的合为一组;2、相邻相同的合为一组。
2 回答
噜噜哒
TA贡献1784条经验 获得超7个赞
letarr=[1,2,3,4,5,6,6,7,8,9,10,10,10,11,12,12,4,5]letsplitArray=function(A){letglobal=[[A[0]]],local=global[0]for(vari=1;iletp=local[local.length-1],pp=local[local.length-2] if(A[i]===p&&(p===pp||!pp)||A[i]!==p&&p!==pp){local.push(A[i])}else{local=[A[i-1],A[i]]global.push(local)}}returnglobal}console.log(splitArray(arr))
暮色呼如
TA贡献1853条经验 获得超9个赞
functionmerge(arr){let_arr=[];//临时存储letresult=[];if(arr.length===0){return[];}elseif(arr.length===1){return[arr];}_arr=[arr[0]];//从第1个开始循环for(leti=1,len=arr.length;i//若当前的数与前一个不相等 if(arr[i]!==arr[i-1]){_arr.push(arr[i]);//若当前的数与后一个相等时,则说明当前的队列完成if(arr[i]===arr[i+1]){result.push(_arr);_arr=[arr[i]];}}else{_arr.push(arr[i]);if(arr[i]!==arr[i+1]){result.push(_arr);_arr=[arr[i]];}}if(i===len-1){result.push(_arr);}}returnresult;}测试样例:vararr=[1,2,3,4,5,6,6,7,8,9,10,10,10,11,12,12,4,5];console.log(merge(arr));/*[[1,2,3,4,5,6][6,6][6,7,8,9,10][10,10,10][10,11,12][12,12][12,4,5]]*/vararr=[];console.log(merge(arr));//[]vararr=[1];console.log(merge(arr));/*[[1]]*/vararr=[1,2];console.log(merge(arr));/*[[1,2]]*/vararr=[1,2,3];console.log(merge(arr));/*[[1,2,3]]*/vararr=[1,1,2,2,3];console.log(merge(arr));/*[[1,1][1,2][2,2][2,3]]*/
添加回答
举报
0/150
提交
取消