Показать сообщение отдельно
  #1 (permalink)  
Старый 06.02.2017, 13:56
Аватар для RoyalHunt
Интересующийся
Отправить личное сообщение для RoyalHunt Посмотреть профиль Найти все сообщения от RoyalHunt
 
Регистрация: 17.01.2017
Сообщений: 16

При замене определенного элемента в многомерном массиве, заменяются в каждой строке.
Здравствуйте!

Новичок. Делаю карту для игры через многомерный массив, следующим образом:

class GameMap {
  constructor() {
      this.data = this.createMap();
      this.data[2][2] = 1; //****

			// 0 - empty
			// 1 - box
  }

	createMap() {
		var arr = [];
		for (let i=0; i<10; i++){
			arr.push(0);
		}
		var arr10x10 = [];
		for (let i=0; i<10; i++){
			arr10x10.push(arr);
		}
		return arr10x10;
	}

  save(){
  	localStorage.setItem('gamemap', JSON.stringify(this));
  }

  load(){
  	var gamemap = JSON.parse(localStorage.getItem('gamemap'));
  	this.data = gamemap.data;
  }

	show(){
		var map = document.getElementById('map');
		map.style.width = "500px";
		map.style.height = "500px";
		for (let i=0; i<this.data.length; i++){
			for (let y=0; y<this.data.length; y++){
				var cols = document.createElement('div');
				var rows = document.createElement('div');
				cols.className=`d-${this.data[i][y]}`;
				cols.style.width = "50px"
				cols.style.height = "50px"
        cols.style.border = "1px solid black"
        rows.style.border = "1px solid black"
				map.appendChild(cols);
				map.appendChild(rows);
			}
		}

	}
}


Проблема в следующей строке this.data[2][2] = 1; //**** Она не заменяет нужный элемент. 1 добавляется во втором элементе каждой строки: http://take.ms/OJNiU Не могу понять почему.
Помогите, пожалуйста
Ответить с цитированием