Уважаемые форумцы, подскажите пожалуйста.
Имеется массив 9x9 стоящий из 0 и 1.
Для каждого элемента нужно просмотреть близлежащие вокруг него (т.е. он сам в центре, а вокруг 8 клеток)и если они равны 1 увеличить счетчик на 1.
При переборе если элемент в массиве не существует например (i=-1 и j =-1 для левой угловой клетки) выдается ошибка в консоль, поэтому в ручную обрабатываю угловые клетки и боковые. Вот пример работающего кода.
Имеются ли более изящные способы обработки клеток вокруг элемента?
if (i == 0 || j == 0 || i == row - 1 || j == column - 1) {
if (i == 0 || j == 0) {
if (i == 0 && j == 0) {
array[i][j + 1] == 1 ? ++count : count;
array[i + 1][j] == 1 ? ++count : count;
array[i + 1][j + 1] == 1 ? ++count : count;
}
if (i == 0 && j != 0 && j != column - 1) {
array[i][j - 1] == 1 ? ++count : count;
array[i][j + 1] == 1 ? ++count : count;
array[i + 1][j - 1] == 1 ? ++count : count;
array[i + 1][j] == 1 ? ++count : count;
array[i + 1][j + 1] == 1 ? ++count : count;
}
if (i != 0 && i != row - 1 && j == 0) {
array[i - 1][j] == 1 ? ++count : count;
array[i - 1][j + 1] == 1 ? ++count : count;
array[i][j + 1] == 1 ? ++count : count;
array[i + 1][j] == 1 ? ++count : count;
array[i + 1][j + 1] == 1 ? ++count : count;
}
}
if (i == row - 1 || j == column - 1) {
if (i == 0 && j == column - 1) {
array[i][j - 1] == 1 ? ++count : count;
array[i + 1][j - 1] == 1 ? ++count : count;
array[i + 1][j] == 1 ? ++count : count;
}
if (i == row - 1 && j == 0) {
array[i - 1][j] == 1 ? ++count : count;
array[i - 1][j + 1] == 1 ? ++count : count;
array[i][j + 1] == 1 ? ++count : count;
}
if (i == row - 1 && j == column - 1) {
array[i - 1][j - 1] == 1 ? ++count : count;
array[i - 1][j] == 1 ? ++count : count;
array[i][j - 1] == 1 ? ++count : count;
}
if (i != 0 && i != row - 1 && j == column - 1) {
array[i - 1][j - 1] == 1 ? ++count : count;
array[i - 1][j] == 1 ? ++count : count;
array[i][j - 1] == 1 ? ++count : count;
array[i + 1][j - 1] == 1 ? ++count : count;
array[i + 1][j] == 1 ? ++count : count;
}
if (i == row - 1 && j != 0 && j != column - 1) {
array[i - 1][j - 1] == 1 ? ++count : count;
array[i - 1][j] == 1 ? ++count : count;
array[i - 1][j + 1] == 1 ? ++count : count;
array[i][j - 1] == 1 ? ++count : count;
array[i][j + 1] == 1 ? ++count : count;
}
}
// console.log(count);
} else {
array[i - 1][j - 1] == 1 ? ++count : count;
array[i - 1][j] == 1 ? ++count : count;
array[i - 1][j + 1] == 1 ? ++count : count;
array[i][j - 1] == 1 ? ++count : count;
array[i][j + 1] == 1 ? ++count : count;
array[i + 1][j - 1] == 1 ? ++count : count;
array[i + 1][j] == 1 ? ++count : count;
array[i + 1][j + 1] == 1 ? ++count : count;
// console.log(count);
}