将数组连续添加到2D数组

时间:2016-11-29 19:37:15

标签: javascript arrays

每当我点击网格中的单元格时,它会将单元格的[行,列]数组记录到变量中,bla(黑色)或whi(白色)。但是,下次单击一个单元格时,它会更改变量。例如,我点击一个单元格,变量whi是[1,2]然后我点击另一个单元格,变量bla是[2,2],之后,我点击第三个单元格,变量whi从[1]变化,2](从原始点击)到[3,2]。 (我为此编了随机数字)。我想创建两个2D数组,一个用于变量bla,另一个用于变量whi。使用我的例子,其中一个2D数组应该是[[1,2],[3,2]](对于白色单元格),另一个应该是[[2,2]](对于黑色单元格)< / p>

测试代码:

&#13;
&#13;
var white=true;
function generateGrid( rows, cols ) {
    var grid = "<table>";
    for ( row = 1; row <= rows; row++ ) {
        grid += "<tr>"; 
        for ( col = 1; col <= cols; col++ ) {      
            grid += "<td></td>";
        }
        grid += "</tr>"; 
    }
    return grid;
}

$( "#tableContainer" ).append( generateGrid( 10, 10) );

$( "td" ).click(function() {
   $(this).css('cursor','default');
   var index = $( "td" ).index( this );
   var row = Math.floor( ( index ) / 10) + 1;
   var col = ( index % 10) + 1;
   var $td = $(this);
   if ($td.data('clicked')) 
      return;
      if (white===true){
          var whi=[row,col];   //I want to log the array for whi into a 2D array
          console.log("white coord is "+whi);
      } else {
          var bla=[row,col];   //I want to log this array into another 2D array
          console.log("black coord is "+bla);
      }

   $td.data('clicked', true);

   $td.css('background-color', white ? 'white' : 'black');
   white = !white;
});
&#13;
html{
    background-color:#7189ea;
}
td {
    border: 1px solid;
    width: 25px;
    height: 25px;
    border-radius:100%;
}

table {
    border-collapse: collapse;
}
&#13;
<link type="text/css" rel="stylesheet" href="stylesheet.css"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<div id="tableContainer"></div>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

whibla初始化为数组并将[row,col]推送给他们 - 请参阅下面的演示:

var white = true;

var whi = [];
var bla = [];

function generateGrid(rows, cols) {
  var grid = "<table>";
  for (row = 1; row <= rows; row++) {
    grid += "<tr>";
    for (col = 1; col <= cols; col++) {
      grid += "<td></td>";
    }
    grid += "</tr>";
  }
  return grid;
}

$("#tableContainer").append(generateGrid(10, 10));

$("td").click(function() {
  $(this).css('cursor', 'default');
  var index = $("td").index(this);
  var row = Math.floor((index) / 10) + 1;
  var col = (index % 10) + 1;
  var $td = $(this);
  if ($td.data('clicked'))
    return;
  if (white === true) {
    whi.push([row, col]);
  } else {
    bla.push([row, col]);
  }

  $td.data('clicked', true);
  $td.css('background-color', white ? 'white' : 'black');
  white = !white;
});

$('#getarr').click(function(){
  console.log("white arr: ", whi);
  console.log("black arr: ", bla);
});
html {
  background-color: #7189ea;
}
td {
  border: 1px solid;
  width: 25px;
  height: 25px;
  border-radius: 100%;
}
table {
  border-collapse: collapse;
}
<link type="text/css" rel="stylesheet" href="stylesheet.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<div id="tableContainer"></div>

<button id="getarr">Get array</button>