javascript - 在交替的正方形中填充二维数组

标签 javascript jquery arrays

您有一个值 n,它将确定二维数组或表格的维度。然后你应该从外层到中心填充数组或表,一次用 1,一次用 0,直到没有其他元素可写。

n=5 n=5

n=6 n=6

已经尝试了很长时间,希望得到任何帮助。不能再填充边界了。

我的最新代码:

function fillArray(n) {
    var exArray = [];
    var html = '';
    for (var i = 0; i < n; i++) {
        html+= '<tr>';
        exArray[i] = [];
        for (var j = 0; j < n; j++) {
            exArray[i][j] = 0;
            if(i%(n-1)==0 || j%(n-1)==0) {
                exArray[i][j] = 1;
            }
            html+='<td class="text-center">'+exArray[i][j]+' ['+i+','+j+']</td>';
        };
        html+= '</tr>';
    };
    return html;
}

最佳答案

我认为最简单的方法是只考虑左上象限,然后对称填充其他象限:

var arr = Array(n);
for(var i=0; i<n/2; ++i) {
    arr[  i  ] = new Array(n);
    arr[n-1-i] = new Array(n);
    for(var j=0; j<n/2; ++j)
        arr[  i  ][j] = arr[  i  ][n-1-j] =
        arr[n-1-i][j] = arr[n-1-i][n-1-j] =
        + !(Math.min(i,j) % 2);
}

function fillArray(n) {
  var arr = Array(n);
  for(var i=0; i<n/2; ++i) {
    arr[  i  ] = new Array(n);
    arr[n-1-i] = new Array(n);
    for(var j=0; j<n/2; ++j)
      arr[  i  ][j] = arr[  i  ][n-1-j] =
      arr[n-1-i][j] = arr[n-1-i][n-1-j] =
      + !(Math.min(i,j) % 2);
  }
  var table = document.createElement('table');
  for(var i=0; i<n; ++i) {
    var row = table.insertRow();
    for(var j=0; j<n; ++j)
      row.insertCell().textContent = arr[i][j];
  }
  return table;
}
document.body.appendChild(fillArray(9));
td {
  width: .8em;
  height: .8em;
  line-height: .8em;
}

关于javascript - 在交替的正方形中填充二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29978793/

相关文章:

javascript - 哎呀!有些不对劲。此页面未正确加载 Google map 。有关技术细节,请参阅 JavaScript 控制台

javascript - JQuery 中的引用列表项

javascript - JS - 使用 PreventDefault 而不是 return false

arrays - 根据多个键的比较合并两个哈希数组

Ruby:对象/类数组

php - 了解: From PHP Array to Python?

Javascript:数组长度不计算

javascript - 使用 javascript/JQuery 控制 Piecemaker 2

javascript - Bootstrap 弹出窗口在表格中悬停几次后停止

javascript - 如何在点击外部时关闭 jquery-ui 对话框?