200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python 二维数组 遍历_js 二维数组循环遍历

python 二维数组 遍历_js 二维数组循环遍历

时间:2021-02-22 20:25:38

相关推荐

python 二维数组 遍历_js 二维数组循环遍历

我来贴一些排名较高的答案,真的要膜拜啊:

1:

snail = function(array) {

var result;

while (array.length) {

// Steal the first row.

result = (result ? result.concat(array.shift()) : array.shift());

// Steal the right items.

for (var i = 0; i < array.length; i++)

result.push(array[i].pop());

// Steal the bottom row.

result = result.concat((array.pop() || []).reverse());

// Steal the left items.

for (var i = array.length - 1; i >= 0; i--)

result.push(array[i].shift());

}

return result;

}

2:

snail = function(array) {

var res = [];

while(array.length) {

res = res.concat(array.shift())

array = expand(array);

}

return res;

}

function expand(matrix){

return matrix.reduce(function(res, arr, i){

arr.forEach(function(n, j){

if (!res[j]) res[j] = [];

res[j][i] = n;

})

return res;

}, []).reverse();

}

3:

snail = function(array) {

var maxx = array[0].length,

maxy = maxx,

minx = -1, miny = 0,

x = 0, y = 0,

result = [], dir = "r";

for(var i = maxx*maxx;i>0;i--){

result.push(array[y][x]);

switch (dir){

case "u": y--; break;

case "l": x--; break;

case "d": y++; break;

case "r": x++; break;

}

if(x==maxx-1 && y==miny){ dir="d"; minx++; }

else if(x==maxx-1 && y==maxy-1){ dir="l"; miny++; }

else if(x==minx && y==maxy-1){ dir="u"; maxx--; }

else if(x==minx && y==miny){ dir="r"; maxy--; }

}

return result;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。