Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重构javascript数组旋转函数_Javascript - Fatal编程技术网

重构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是轴心点(现在更正了)