我尝试创建一个2D数组,并在对角线上放置四个“X”并创建一个双循环来检测和计算X的数量,它可以工作,但它没有正确地完成工作它真正做的是它计数每行中X的数量,我的问题是如何才能算出对角线上的X?
var creatematrix = function (nbRang, nbColumn) {
var result = Array(nbRang);
for (var i=0; i<nbRang; i++) {
result[i] = Array(nbColumn);
}
return result;
};
var m = creatematrix(6, 7);
例如,如果我这样做
m[4][1] = "X";
m[3][2] = "X";
m[2][3] = "X";
m[1][4] = "X";
m[5][3] = "O";
m[3][3] = "O";
m[4][3] = "O";
m[2][4] = "O";
或者结果是相同的
m[1][1] = "X";
m[2][1] = "X";
m[3][1] = "X";
m[4][1] = "X";
m[5][3] = "O";
m[3][3] = "O";
m[4][3] = "O";
m[2][4] = "O";
这就是我所拥有的:
var sumX = 0;
for(var k = 5; k >= 0 ; k--){
if(sumX == 4){
alert("player 1 won");
}
for(var i = 0 ; i<= 6; i++){
if(m[k][i]== "X" ){
sumX += 1;
break;
}
if(m[k][i]== "O" ){
sumX = 0;
}
}
}
答案 0 :(得分:1)
function getCount(m){
var count =0;
for(var i=0; i<m.length; i++)
{
if(m[i][m.length-i-1] === "X")
{
count++;
}
}
return count;
}
这将沿着对角线向下并检查每个值。
您还可以使用
执行更短(但不太可读)的版本function getCount(m){
return m.reduce(function(prev,current,index,arr){
return prev + current[arr.length-index-1];},0);
}