Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопросы по Javascript. (https://javascript.ru/forum/misc/45653-voprosy-po-javascript.html)

koderman 10.03.2014 12:15

Вопросы по 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]);

рони 10.03.2014 12:27

Цитата:

Сообщение от 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));

Aetae 10.03.2014 12:32

Потому что это на самом деле массив массивов, и делая так
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]);
но лучше придумать что-нибудь другое.

koderman 10.03.2014 12:34

Я так думал что по адресу array[1] будет находиться 3. А по адресу array[1][1] будет находиться 5.
Так?

Aetae 10.03.2014 12:38

Не так.
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 
*/

koderman 10.03.2014 12:57

Здесь сделано по такому принципу и всё работает.
Сначала такому типу массива присваиваются данные 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]);

koderman 10.03.2014 13:05

Цитата:

Сообщение от Aetae (Сообщение 301972)
и делая так
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]);

Aetae 10.03.2014 13:12

Цитата:

Сообщение от koderman (Сообщение 301978)
Неправда. Ничего не заменяется.


koderman 10.03.2014 13:14

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

koderman 10.03.2014 13:24

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

nerv_ 10.03.2014 13:29

Цитата:

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

Вот поэтому я и не отвечаю в подобных темах :)

koderman 10.03.2014 13:32

Попытаюсь сам на свой вопрос ответить.
Многомерный массив имеет другую структуру адреса чем одномерный.
И обращаться к нему можно только так array[][] задавая двойной параметр.
Массив не может быть и двумерным и одномерным одновременно. То-есть если он двумерный array[][] и в нём сохранить информацию так array[], то структура адресов испортится.

koderman 10.03.2014 13:33

Цитата:

Сообщение от nerv_ (Сообщение 301985)
Вот поэтому я и не отвечаю в подобных темах :)

Вам стоило бы и не заходить на самом деле на подобные форумы.
Авария с головой в излагательной области.

koderman 13.03.2014 07:48

Можно это записать короче? http://jsfiddle.net/LYBKQ/8/
Написал как мог теми средствами которые знаю. Может можно сделать код короче?

Если прошлые вопросы вам казались слишком лёгкие, надеюсь этот вопрос не покажется слишком сложным.

koderman 13.03.2014 18:44

Ишаки мля.
То им слишком легко. То им слишком сложно.
Бычий контингент. Форум загнётся. Вот моё предсказание.

BallsShaped 13.03.2014 20:10

Цитата:

Сообщение от koderman
Форум загнётся. Вот моё предсказание.

Обоснуй. Скорее всего ты пришёл к такому выводу, проведя какие-то исследования. Можно ссылочки на публикации этих исследований в научных журналах. Просто мне очень важно узнать методику прогнозирования загибания форумов. Очень нужно!!!

koderman 14.03.2014 07:43

Если что-то бесполезно, то оно вымирает. Атавизм называется.

BETEPAH 14.03.2014 09:58

Цитата:

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

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


array[0] = 3;
array[2] = 5;
array[4] = 7;

if(!Array.isArray) {
  Array.isArray = function(arg) {
    return Object.prototype.toString.call(arg) === '[object Array]';
  };
}
for(var i = 0; i < array.length; i++) {
alert(i + ' - ' + (Array.isArray(array[i]) ? 'массив' : 'не массив'));
}

BETEPAH 14.03.2014 10:00

Цитата:

Сообщение от koderman
Да ещё смеют критиковать курсы которые я смотрю

Похоже, не зря критикуют-то?

BallsShaped 14.03.2014 12:57

Цитата:

Сообщение от koderman
Если что-то бесполезно, то оно вымирает. Атавизм называется.

Изучить вопрос - дело сложное, а вспизднуть - любой дурак может. Во-первых, бесполезность - не является причиной вымирания. Во-вторых, атавизм - это, вообще, совсем не то, что ты думаешь. И если уж о чём и сведетельствует, так это о сохранение чего-то бесполезного.

nerv_ 14.03.2014 13:15

Цитата:

Сообщение от koderman
Ишаки мля.

BETEPAH, после того, как тебя назвали "ишаком" ты помогаешь? Давай я тогда тоже тебя как-нибудь назову, раз тебе все равно :)

koderman, а не думала твоя козья голова, что у нас нет времени и желания таким как ты помогать? Вопрос риторический.

koderman 14.03.2014 14:22

Да я уже понял, пофлудить вы любите. А как объяснить, так прикидываетесь китайцами. Такое ощущение что вы свои ответы через китайский переводчик переводите.
BallsShaped, оттого он и атавизм что у 99% этого нету. Честное слово, ни в программировании, ни в жизни. Вас можно экспонатом возить в качестве объяснения термина атавизм. Даже здесь сцуко баран решил загвоздку найти. Парнокопытный.
nerv_, представь я стараюсь говорить что вижу.
Один картинки постит, другой сарказничает. Форум. Да кому это надо такое. Наверное тем кто хочет 20 лет что-то изучать. Тьфу тьфу, от таких как ты ответы мне не нужны. Человек-недоразумение.

BETEPAH, я яваскрипт изучаю месяц и уже написал программу. Единственное моё неправильное решение было это заходить на этот форум и терять время.

koderman 14.03.2014 15:04

Посмотри лошадь как я пытался объяснить людям то что знал и как можно понятнее.
http://javascript.ru/forum/study/452...x-s-nulya.html
Человеческим языком и не через китайский переводчик. Если понадобились бы скриншоты или прочие диаграммы, то и их бы сделал. А они заходят в тему со своими сме*ерочками.
Или китайцы мимикрируют в русскоязычных или алкоголики, мозг пропили.

koderman 14.03.2014 15:29

BETEPAH исправляется. Уже лучше на примере показал.

BETEPAH 14.03.2014 23:53

nerv_,
вот какой он - первый кармаслив :thanks: :dance:


Часовой пояс GMT +3, время: 07:19.