Javascript.RU

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

Вопросы по Javascript.
Многомерный массив.
Почему не присваивается число к array[1][1] = 5; Вроде правильно всё?

var array = new Array(10);
for(var i = 0; i < array.length; i++)
{array[i] = new Array(10);}

array[1] = 3;
array[1][1] = 5;


alert(array[1][1]);
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2014, 12:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от koderman
array[1] = 3;
это типа убьём массив ? а потом попытемся в него что-то записать
var array = new Array(10);
    for (var i = 0; i < array.length; i++) {
        array[i] = new Array(10);
    }
    array[1] = 3;
    alert(JSON.stringify(array));

Последний раз редактировалось рони, 10.03.2014 в 12:33.
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2014, 12:32
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

Потому что это на самом деле массив массивов, и делая так
array[1] = 3;
Вы на самом деле заменяете массив под номером 1 на число, и в итоге
array[1][1] = 5;
~
3[1] = 5;
что, естесно, бред.


Если очень хочется - можно применить хак:
function toString(){ return this.value+'' }
function toInt(){ return parseInt(this.value,10) }

var array = new Array(10);
for(var i = 0; i < array.length; i++)
{array[i] = new Array(10);}

array[1].value = 3;
array[1].toString = toString;
array[1].valueOf = toInt;

array[1][1] = 5;

alert(array[1]);
alert(array[1][1]);
но лучше придумать что-нибудь другое.
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2014, 12:34
Аспирант
Отправить личное сообщение для koderman Посмотреть профиль Найти все сообщения от koderman
 
Регистрация: 06.02.2014
Сообщений: 53

Я так думал что по адресу array[1] будет находиться 3. А по адресу array[1][1] будет находиться 5.
Так?
Ответить с цитированием
  #5 (permalink)  
Старый 10.03.2014, 12:38
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

Не так.
var array = new Array(10);
// array = [,,,,,,,,,,]
for(var i = 0; i < array.length; i++)
{array[i] = new Array(10);}
/* 
array = 
[
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,]
]
*/

array[1] = 3;
/*
array = 
[
	[,,,,,,,,,,],
	3,
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,],
	[,,,,,,,,,,]
]
*/
array[1][1] = 5;
/*
error 
*/
__________________
29375, 35

Последний раз редактировалось Aetae, 10.03.2014 в 12:43.
Ответить с цитированием
  #6 (permalink)  
Старый 10.03.2014, 12:57
Аспирант
Отправить личное сообщение для koderman Посмотреть профиль Найти все сообщения от koderman
 
Регистрация: 06.02.2014
Сообщений: 53

Здесь сделано по такому принципу и всё работает.
Сначала такому типу массива присваиваются данные array[]
А потом такому array[][]
Это таблица умножения.


var array = new Array(10);

for(var i = 0; i < array.length; i++)
{array[i] = new Array(10);}

for(var j = 0; j < array.length; j++) {
	for(var n = 0; n < array[j].length; n++){
		array[j][n] = j*n;
				}}
		alert(array[8][5]);
Ответить с цитированием
  #7 (permalink)  
Старый 10.03.2014, 13:05
Аспирант
Отправить личное сообщение для koderman Посмотреть профиль Найти все сообщения от koderman
 
Регистрация: 06.02.2014
Сообщений: 53

Сообщение от Aetae Посмотреть сообщение
и делая так
array[1] = 3;

Вы на самом деле заменяете массив под номером 1 на число, и в итоге
array[1][1] = 5;
~
3[1] = 5;
что, естесно, бред.



Неправда. Ничего не заменяется.

var array = new Array(10);
for(var i = 0; i < array.length; i++)
{array[i] = new Array(10);}


array[1]= 3;
array[2] =5;
array[3] =7;
alert(array[1]);
alert(array[2]);
alert(array[3]);
Ответить с цитированием
  #8 (permalink)  
Старый 10.03.2014, 13:12
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

Сообщение от koderman Посмотреть сообщение
Неправда. Ничего не заменяется.
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 10.03.2014, 13:14
Аспирант
Отправить личное сообщение для koderman Посмотреть профиль Найти все сообщения от koderman
 
Регистрация: 06.02.2014
Сообщений: 53

Как объяснили так я и понял.
Сказали что заменяет. Я так и понял что заменяет. Проверил, не заменяет на самом деле.#
Вы объясняете также как врач пишет.
Легче уже википедию читать в самом деле.

Последний раз редактировалось koderman, 10.03.2014 в 13:17.
Ответить с цитированием
  #10 (permalink)  
Старый 10.03.2014, 13:24
Аспирант
Отправить личное сообщение для koderman Посмотреть профиль Найти все сообщения от koderman
 
Регистрация: 06.02.2014
Сообщений: 53

Как правильно говорится: в светлой голове светлые мысли.
Картинки ещё постит. Советовал бы я вам потренироваться в излагании мыслей.
Билебирду понапишут и хотят чтобы их поняли. Да ещё смеют критиковать курсы которые я смотрю.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возникли вопросы по созданию игры на javascript alex510i Общие вопросы Javascript 3 19.09.2013 16:46
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34