Я не могу понять. Почему если я в my_data закину объект, то все работает как надо.
Меня устроит любой даже блокирующий вариант.
this.ctx.fillStyle = this.memory[y][x] === 0 ? '#0d2a37': '#CCC';
memory[y][x] === 0 ? бла-бла-бла
(и почему memory, а не matrix? - отрисовывать надо новое состояние, а не прошлое)? Неужели количество доступных состояний у вас ограничено всего лишь двумя? А как же картинка из вопроса, где есть клетки в шести различных состояниях? Лучше сделайте объект, где ключ - состояние, а значение - цвет:var colors = {
0: какой-то цвет,
1: ещё какой-то цвет,
2: и ещё,
3: да сколько угодно,
...
};
this.ctx.fillStyle = colors[this.matrix[y][x]];
var groups = [...Array(numCellStates)].map(() => []);
groups[this.matrix[y][x]].push(x, y);
for (var state = 0; state < groups.length; state++) {
this.ctx.fillStyle = colors[state];
var cells = groups[state];
for (var i = 0; i < cells.length; i += 2) {
this.ctx.fillRect(cells[i] * this.coefX, cells[i + 1] * this.coefY, this.coefX, this.coefY);
}
}
Рисовать только "живые" клетки на "мертвом" фоне.
Рисовать только изменившиеся клетки.
Есть еще идеи?
Попробую канвас, но пока-что replace быстрее всего
<button @click="$emit('show-next', 0)">1</button>
<button @click="$emit('show-next', 1)">2</button>
...
Update:
Посмотрел в отладке, что приходит
почему приходит только объект с внешними ключами?
Как вывести имя автора?
Это зря - так вы смешиваете код, выполняющий разные задачи - расчёт новых состояний и рендеринг. Во-первых - сам по себе код становится более запутанным, сложным для понимания.
А главное - совсем не обязательно, что каждое поколение клеток должно быть отрисовано. Представьте, что в будущем вы захотите добавить такую функциональность, как прокрутку на N поколений вперёд - типа, не хотите наблюдать за эволюцией, нужен только результат. Или возникнет необходимость реализовать отображение только одного поколения из двух или трёх или ... - для того же ускорения работы (не только, для этого есть и другие причины). В этом случае группировка клеток, выполняемая вместе с расчётом новых состояний отрицательно скажется на производительности.