Перебор элементов для массива вокруг элемента
Уважаемые форумцы, подскажите пожалуйста.
Имеется массив 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); } |
victornalchik,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Цитата:
https://javascript.ru/forum/misc/673...tml#post444024 |
Часовой пояс GMT +3, время: 16:54. |