Javascript 如何检查二维数组在一行中是否有三个相同的值

Javascript 如何检查二维数组在一行中是否有三个相同的值,javascript,arrays,loops,Javascript,Arrays,Loops,我试图找出如何检查2D数组在一行中是否包含3个相同的值。这个2D数组将由用户生成,所以用于检查的函数必须是动态的 例如,假设用户类型为4x4。结果将是这样 let arr=[ [" "," "," "," "], [" "," "," "," "], [" "," ",&

我试图找出如何检查2D数组在一行中是否包含3个相同的值。这个2D数组将由用户生成,所以用于检查的函数必须是动态的

例如,假设用户类型为4x4。结果将是这样

  let arr=[
    [" "," "," "," "],
    [" "," "," "," "],
    [" "," "," "," "],
    [" "," "," "," "]
  ]
让我向该数组添加一些值

  let arr=[
    [" "," ","x","x"],
    ["x","x","x"," "],
    [" "," "," "," "],
    [" "," "," "," "]
  ]
我试图用这个函数解决这个问题,但昨天我注意到它不能正常工作。

  function checkArray(arr){
    for(let i=0;i<arr.length;i++){
      let count = 0;
      for(let j=0;j<arr[i].length;j++){
        if(arr[i][j] === 'x'){
          count++;
        }

        if(count === 3 ){
          console.log('x wins')
        }
      }
    }
  }
  
  console.log(checkArray(arr)) //count will be 3 and console.logs 'x wins'.
所以条件不应该满足,函数不应该console.log('w wins')。但确实如此。我解决这个问题的方法是处理整行,而不仅仅是一行中有3个(x,x,x)


我希望我已经解释清楚了。谢谢你的建议。

如果你没有得到
'x'
,你需要重置计数

函数校验数组(arr){
for(设i=0;ilog(checkArray(arr))不要在孔数组上循环查找一行中的3,而是从用户插入值atthank you的位置开始检查每个方向!你的解决方案对我有用。我的意思是,它适用于水平和垂直方向。但现在对于对角线,它不起作用。
  let arr=[
    [" "," ","x","x"],
    ["x","x"," ","x"],
    [" "," "," "," "],
    [" "," "," "," "]
  ]