JavaScript - 存储数字网格

时间:2017-01-09 17:06:46

标签: javascript

我想生成一个数字网格(10 x10),其中顶行按随机顺序为数字1-10,第一列按随机顺序为1-10。内部数字将根据边缘上的数字以各种方式计算。我的问题是关于这些数据的组织/结构。跨行/列访问和计算它们的最佳方法是什么。它是10个数组,每个10个元素或json对象?我被卡住,因为我最初只有toprow和第一列将随机生成。将计算网格上的其余数字。请告知如何处理它。谢谢

1 个答案:

答案 0 :(得分:1)

我把单个细胞的计算留给了你

我使用了帖子shuffle

中引用的随机播放功能



var hdrAry = new Array(), hdrAry2 = new Array(), tenCols = "<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>";
function shuffle(array) {
  // [shuffle](https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array)
  var currentIndex = array.length, temporaryValue, randomIndex;
  while (0 !== currentIndex) {
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex -= 1;
    temporaryValue = array[currentIndex];
    array[currentIndex] = array[randomIndex];
    array[randomIndex] = temporaryValue;
  }
  return array;
}

function buildHead(table_id) {
   buildArys();
   $('table#'+table_id).html('<thead><tr><th></th></tr></thead><tbody>');
  for(i=0; i<10; i++){
    $('table#'+table_id+' thead tr').append('<th class="text-center">'+hdrAry[i]+'</th>');
    $('table ').append('<tr><th>'+hdrAry2[i]+'</th>'+tenCols+'</tr>')
  }
   $('table#'+table_id).append('</tbody>');
}

function buildArys(){
  //clear the arrys 1st
  hdrAry = [];
  hdrAry2 = [];
  //add numbers 1-10 to both arrays
  for(j=1; j<11; j++){
     hdrAry.push(j);
     hdrAry2.push(j);
  }
  //now shuffle them up
  shuffle(hdrAry);
  shuffle(hdrAry2);
}

$(document).ready(function() {
  buildHead('sb');
})
&#13;
th{
  width:40px;
  }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="test" onclick="buildHead('sb')">Generate Header</button>
<table border=1 id="sb" class="table  table-bordered table-striped" >
</table>
&#13;
&#13;
&#13;