1. 程式人生 > >回型遍歷(螺旋遍歷)(js)

回型遍歷(螺旋遍歷)(js)

思路很簡單 縱向走, 走一步,刪一個,,橫向走 ,走一行,刪一行

//沒優化  簡單寫了下   
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