重构javascript数组旋转函数
我写了一个旋转函数,但我不满意:重构javascript数组旋转函数,javascript,Javascript,我写了一个旋转函数,但我不满意: var pixels=['011','110','000']; var result=new Array(); result=['000','000','000']; var r = {x:1,y:1}; //rotating point var clock = true; //clock or counter-clock rotation for ( y=0; y<(pixels.length); y++ ){ for ( x=0; x<(
var pixels=['011','110','000'];
var result=new Array();
result=['000','000','000'];
var r = {x:1,y:1}; //rotating point
var clock = true; //clock or counter-clock rotation
for ( y=0; y<(pixels.length); y++ ){
for ( x=0; x<(pixels.length); x++ ){
var newx=0,newy=0;
if ( clock ){
if ( x< r.x && y< r.y ) {newx=x+2;newy=y ;}//top left
if ( x==r.x && y< r.y ) {newx=x+1;newy=y+1;}//top
if ( x> r.x && y< r.y ) {newx=x ;newy=y+2;}//top right
if ( x< r.x && y==r.y ) {newx=x+1;newy=y-1;}//left
if ( x==r.x && y==r.y ) {newx=x ;newy=y ;}//center
if ( x> r.x && y==r.y ) {newx=x-1;newy=y+1;}//right
if ( x< r.x && y> r.y ) {newx=x ;newy=y-2;}//bottom left
if ( x==r.x && y> r.y ) {newx=x-1;newy=y-1;}//bottom
if ( x> r.x && y> r.y ) {newx=x-2;newy=y ;}//bottom right
} else {
if ( x< r.x && y< r.y ) {newx=x ;newy=y+2;}//top left
if ( x==r.x && y< r.y ) {newx=x-1;newy=y+1;}//top
if ( x> r.x && y< r.y ) {newx=x-2;newy=y ;}//top right
if ( x< r.x && y==r.y ) {newx=x+1;newy=y+1;}//left
if ( x==r.x && y==r.y ) {newx=x ;newy=y ;}//center
if ( x> r.x && y==r.y ) {newx=x-1;newy=y-1;}//right
if ( x< r.x && y> r.y ) {newx=x+2;newy=y ;}//bottom left
if ( x==r.x && y> r.y ) {newx=x+1;newy=y-1;}//bottom
if ( x> r.x && y> r.y ) {newx=x ;newy=y-2;}//bottom right
}
//inject(result,newx,newy,pixels[y][x])
}
}
var像素=['011'、'110'、'000'];
var result=新数组();
结果=['000','000','000'];
var r={x:1,y:1}//旋转点
var时钟=真//时钟或反时钟旋转
对于(y=0;yr.x&&y==r.y){newx=x-1;newy=y+1;}//右
如果(xr.y){newx=x;newy=y-2;}//左下角
如果(x==r.x&&y>r.y){newx=x-1;newy=y-1;}//bottom
如果(x>r.x&&y>r.y){newx=x-2;newy=y;}//右下角
}否则{
如果(xr.x&&yr.x&&y==r.y){newx=x-1;newy=y-1;}//正确
如果(xr.y){newx=x+2;newy=y;}//左下角
如果(x==r.x&&y>r.y){newx=x+1;newy=y-1;}//bottom
如果(x>r.x&&y>r.y){newx=x;newy=y-2;}//右下角
}
//注入(结果,新x,新y,像素[y][x])
}
}
现在有人知道如何为这个旋转(时钟和计数器时钟)函数编写更干净的代码了吗?您可以尝试中的建议,但是您可能必须使用数组数组,而不是字符串数组(无论如何这可能更有意义)。变量
r
是否与结果
相同?如果没有,它是未定义的。谢谢你的评论,我忘了提到r是轴心点(现在更正了)