Как правильно сделать условие для цикла в данной ситуации на Javascript?
Если очень хочется знать всё до грамма, нужно проверять все направленияfor (var i = 0, result = []; i < arr.length; i++){
	for (var j = 0, _result = []; j < arr[i].length; j++){
		_result.push({
			t: i == 0 ? null : arr[i][j] === arr[i - 1][j],
			tr: i == 0 || j == arr[i].length - 1 ? null : arr[i][j] === arr[i - 1][j + 1],
			r: j == arr[i].length - 1 ? null : arr[i][j] === arr[i][j + 1],
			br: i == arr.length - 1 || j == arr[i].length - 1 ? null : arr[i][j] === arr[i + 1][j + 1],
			b: i == arr.length - 1 ? null : arr[i][j] === arr[i + 1][j],
			bl: i == arr.length - 1 || j == 0 ? null : arr[i][j] === arr[i + 1][j - 1],
			l: j == 0 ? null : arr[i][j] === arr[i][j - 1],
			tl: i == 0 || j == 0 ? null : arr[i][j] === arr[i - 1][j - 1]
		});
	}

	result.push(_result);
}

console.log(JSON.stringify(result));
Если же достаточно знать, что ячейка непустая и совпадает с любым направлением, можно прощеfor (var i = 0, result = []; i < arr.length; i++){
	for (var j = 0, _result = []; j < arr[i].length; j++){
		var status = !!arr[i][j];

		if (!status) {
			status = arr[i][j] === arr[i][j - 1] || arr[i][j] === arr[i][j + 1];

			if (!status && i != 0) {
				status = arr[i][j] && (arr[i][j] === arr[i - 1][j - 1] || arr[i][j] === arr[i - 1][j] || arr[i][j] === arr[i - 1][j + 1]);
			} else if (!status && i != arr.length - 1) {
				status = arr[i][j] && (arr[i][j] === arr[i + 1][j - 1] || arr[i][j] === arr[i + 1][j] || arr[i][j] === arr[i + 1][j + 1]);
			}
		}

		_result.push(status);
	}

	result.push(_result);
}

console.log(JSON.stringify(result));Пример
Зачем такой код if(arr[i][j] == "X" && arr[i+1][j] == "X" && arr[i+2][j] == "X") во вложенном цикле? Зачем прибавлять константы, если есть переменная i?// Проход по горизонтали
// Проход по вертикали такой же, только во вложенном цикле поменяйте местами i и j в условии
for(var i = 0; i < arr.length; i+=1){
  countet = 0;
   for(var j = 0; j < arr.length; j+=1){
     var last_counter = counter;
     if (arr[i][j] == 'X') {
        counter++
     }
     else {
       counter = 0;
     }
     // здесь можем сделать нужные вычисления с counter и last_counter. Например, найти максимально длинную последовательность
   }
}
// По диагонали
var counter = 0;
for (var i = 0; i < arr.length; i++) {
  var last_counter = counter;
   if (arr[i][i] == 'X') {
      counter++
   }
   else {
     counter = 0;
   }
   // здесь можем сделать нужные вычисления с counter и last_counter. Например, найти максимально длинную последовательность
}
PS цИкл, диагонАль, ',,,,'