矩阵网格,其中心为0,0

时间:2017-11-23 17:29:41

标签: javascript arrays matrix

试图让我的头脑绕过这个数学。我有一个网格,我想远远知道该区块是从中心。

我有一个功能,目前如下:

let grid = [];

function buildGrid(c, r) {
    for(let i = 1; i <= r; i++) {
        for(let j = 1; j <= c; j++) {
        }
    }
}
buildGrid(5, 3);

我希望它输出到网格的内容如下:

let grid = [{x: -2, y: -1},
            {x: -1, y: -1},
            {x: 0, y: -1},
            {x: 1, y: -1},
            {x: 2, y: -1},
            {x: -2, y: 0},
            {x: -1, y: 0},
            {x: 0, y: 0},
            {x: 1, y: 0},
            {x: 2, y: 0},
            {x: -2, y: 1},
            {x: -1, y: 1},
            {x: 0, y: 1},
            {x: 1, y: 1},
            {x: 2, y: 1}];   

或者

 -2, -1 | -1, -1 | 0, -1 | 1, -1 | 2, -1
 -------|--------|-------|-------|-------
 -2, 0  | -1, 0  | 0, 0  | 1, 0  | 2, 0
 -------|--------|-------|-------|-------
 -2, 1  | -1, 1  | 0, 1  | 1, 1  | 2, 1

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

buildGrid(5, 3)buildGrid(7, 5)buildGrid(5, 3)等正流量的回答,意味着大于1的偶数,不添加其他条件。我假设你可以自己做这件事。如果您获得并发布与样本数据共享的所有条件。

&#13;
&#13;
function buildGrid(c, r) {
  var c_less = (c-1)/2;// You need to modify here to add all condition 
  var r_less = (r-1)/2;// You need to modify here to add all condition
  //console.log(c_less);
  var newArr = [];
  for(let j = -r_less; j <= r_less; j++) {
    var str = [];
    for(let i = -c_less; i <= c_less; i++) {
      str.push({x:i,y:j});
    }
    newArr.push(str);
  }
  document.querySelector("#output").innerHTML = JSON.stringify(newArr);
  console.log(newArr);
}
buildGrid(5, 3);
&#13;
<div id="output"></div>
&#13;
&#13;
&#13;

var c_less = (c-1)/2; //您需要在此修改以添加所有其他条件