Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.11.2017, 15:42
Интересующийся
Отправить личное сообщение для victornalchik Посмотреть профиль Найти все сообщения от victornalchik
 
Регистрация: 18.11.2017
Сообщений: 21

Перебор элементов для массива вокруг элемента
Уважаемые форумцы, подскажите пожалуйста.
Имеется массив 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, 19.11.2017 в 07:52.
Ответить с цитированием
  #2 (permalink)  
Старый 18.11.2017, 16:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

victornalchik,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 18.11.2017, 17:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от victornalchik
Имеются ли более изящные способы обработки клеток вокруг элемента?
function chec()
https://javascript.ru/forum/misc/673...tml#post444024
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как назначить одну и ту же клавиатурную комбинацию для двух элементов? Szorstki Элементы интерфейса 1 21.11.2015 07:15
Воздействие функции только для первого элемента набора Иззет jQuery 2 13.10.2015 13:03
получение значений из массива и вставка нового элемента malefikus13 Общие вопросы Javascript 7 06.10.2015 11:56
Кастомный метод для элемента выборки. Casufi jQuery 7 26.09.2013 18:43
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53