回型遍歷(螺旋遍歷)(js)
阿新 • • 發佈:2018-12-31
思路很簡單 縱向走, 走一步,刪一個,,橫向走 ,走一行,刪一行
//沒優化 簡單寫了下
var arr = [
[1,2,3,4],
[12,13,14,5],
[11,16,15,6],
[10,9,8,7]
];
var newArr=JSON.parse(JSON.stringify(arr));
consoles(newArr,'left')
function consoles(newArr,direction){
if(newArr.length==0)return
switch (direction) {
case 'left' :
for(var left=0; left<newArr[0].length;left++){
console.log(newArr[0][left]);
//newArr[0].splice(0,1);
}
newArr.splice(0,1);
consoles(newArr,'down');
break;
case 'right' :
var index=newArr.length-1;
newArr[index]=newArr[index].reverse();
for(var right=0;right< newArr[index].length;right++){
console.log(newArr[index][right]);
}
newArr.splice(index,1);
consoles(newArr,'up');
break;
case 'down' :
for(var down=0;down< newArr.length;down++){
console.log(newArr[down][newArr[down].length-1]);
newArr[down].splice(newArr[down].length-1,1);
}
consoles(newArr,'right');
break;
case 'up':
for(var up=0;up<newArr.length;up++){
console.log(newArr[newArr.length-up-1][0]);
newArr[newArr.length-up-1].splice(0,1);
}
consoles(newArr,'left')
break;
break;
default:
break;
}
}
結果是 控制檯列印 1-16