@dimentimor

Как лучше рендерить клеточный автомат?

Здравствуйте!

Имеется довольно большая матрица (чем больше- тем лучше).
Как правильно отрисовать её на странице?
Хотелось бы еще и с нормальной частотой, хотя-бы раз в 50 ms.

// сейчас в таком виде
function renderMatrix(matrix, selector) {
	var wrap = document.querySelector(selector);

	wrap.innerHTML = '';
	for (var y = 0; y < matrix.length; y++) {

		wrap.innerHTML += '<br>';
		for (var x = 0; x < matrix[y].length; x++) {

			var cell = matrix[y][x];
			wrap.innerHTML += '<div class="_'+ cell +'">'+ cell +'</div>';
		}
	}
}


И еще, не будет ли быстрее преобразовывать матрицу в строку через arr.toString(), помещать строку на страницу, а потом регулярным выражением заменить клетки на дивы?

Картинка
5b4474efbdc06068415417.jpeg
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Имеется довольно большая матрица (чем больше- тем лучше).
Как правильно отрисовать её на странице?
Хотелось бы еще и с нормальной частотой, хотя-бы раз в 50 ms.

Используйте canvas. При правильном подходе сможете добиться результата на порядок лучше, чем 50 миллисекунд.

не будет ли быстрее преобразовывать матрицу в строку через arr.toString()...

Не будет.

Картинка
5b4474efbdc06068415417.jpeg

Указывать состояния не нужно - цветового обозначения вполне достаточно. Кроме того, при небольших размерах клеток вы эти цифры либо не увидите, либо они не будут влезать в свои клетки (вы представьте, что отрисовываете матрицу хотя бы 300x300).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
С нормальной частотой или скоростью? Если матрица не изменилась, то зачем ее перерисовывать?
Предлагаю использовать canvas, легко сможете рисовать очень большие матрицы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
02 июн. 2024, в 01:13
2000 руб./за проект
01 июн. 2024, в 23:49
50000 руб./за проект
01 июн. 2024, в 23:20
30000 руб./за проект