Показать сообщение отдельно
  #1 (permalink)  
Старый 15.03.2013, 00:10
Кандидат Javascript-наук
Отправить личное сообщение для MininAS Посмотреть профиль Найти все сообщения от MininAS
 
Регистрация: 22.09.2009
Сообщений: 122

Как будет правильнее, два варинта обработки массива.
Здравствуйте!
Допустим имеем массив: поле в всем знакомой игре Сапер.
Данное поле состоит из элементов <img />. Необходимо, что бы при нажатии на пустую клетку - клетки стоящие рядом то же открывались если они пустые.
Вопрос: Как правильнее и где быстрее будет работать браузер
1. Представить массив игрового поля, в виде двумерного массива
for (x=0; x<=XxX; x++)
	{
		for (y=0; y<=YyY; y++)
		{
			var myElem = document.createElement('img');
			document.getElementById('game').appendChild(myElem);
			myElem.src = '......';
			myElem.onclick = f_keyPress;
			a_block[x][y] = myElem;
		}
	}

с таким соответственно легче работать и проще проверить, что бы при проверке не вылететь за края поля и не проверить несуществующего элемента.
2. Или одномерного
for (i=1; i<=(XxX * YyY); i++)
	{
		var myElem = document.createElement('img');
		document.getElementById('game').appendChild(myElem);
		myElem.src = '......';
		myElem.onclick = f_keyPress;
	}
	myElem = document.getElementById('game')
	a_block = myElem.getElementsByTagName('img');

Здесь что бы не мудрить с расчетами по проверке не выходит ли элемент за приделы поля я применил проверку на существование данного объекта:
if (typeof a_block[i-XxX-1] == 'object') {.......}
Ответить с цитированием