Вопросы по 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]); |
Цитата:
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)); |
Потому что это на самом деле массив массивов, и делая так
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]);но лучше придумать что-нибудь другое. |
Я так думал что по адресу array[1] будет находиться 3. А по адресу array[1][1] будет находиться 5.
Так? |
Не так.
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 */ |
Здесь сделано по такому принципу и всё работает.
Сначала такому типу массива присваиваются данные 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]); |
Цитата:
Неправда. Ничего не заменяется. 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]); |
Цитата:
![]() |
Как объяснили так я и понял.
Сказали что заменяет. Я так и понял что заменяет. Проверил, не заменяет на самом деле.# Вы объясняете также как врач пишет. Легче уже википедию читать в самом деле. |
Как правильно говорится: в светлой голове светлые мысли.
Картинки ещё постит. Советовал бы я вам потренироваться в излагании мыслей. Билебирду понапишут и хотят чтобы их поняли. Да ещё смеют критиковать курсы которые я смотрю. |
Цитата:
|
Попытаюсь сам на свой вопрос ответить.
Многомерный массив имеет другую структуру адреса чем одномерный. И обращаться к нему можно только так array[][] задавая двойной параметр. Массив не может быть и двумерным и одномерным одновременно. То-есть если он двумерный array[][] и в нём сохранить информацию так array[], то структура адресов испортится. |
Цитата:
Авария с головой в излагательной области. |
Можно это записать короче? http://jsfiddle.net/LYBKQ/8/
Написал как мог теми средствами которые знаю. Может можно сделать код короче? |
Ишаки мля.
То им слишком легко. То им слишком сложно. Бычий контингент. Форум загнётся. Вот моё предсказание. |
Цитата:
|
Если что-то бесполезно, то оно вымирает. Атавизм называется.
|
Цитата:
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]) ? 'массив' : 'не массив')); } |
Цитата:
|
Цитата:
|
Цитата:
koderman, а не думала твоя козья голова, что у нас нет времени и желания таким как ты помогать? Вопрос риторический. |
Да я уже понял, пофлудить вы любите. А как объяснить, так прикидываетесь китайцами. Такое ощущение что вы свои ответы через китайский переводчик переводите.
BallsShaped, оттого он и атавизм что у 99% этого нету. Честное слово, ни в программировании, ни в жизни. Вас можно экспонатом возить в качестве объяснения термина атавизм. Даже здесь сцуко баран решил загвоздку найти. Парнокопытный. nerv_, представь я стараюсь говорить что вижу. Один картинки постит, другой сарказничает. Форум. Да кому это надо такое. Наверное тем кто хочет 20 лет что-то изучать. Тьфу тьфу, от таких как ты ответы мне не нужны. Человек-недоразумение. BETEPAH, я яваскрипт изучаю месяц и уже написал программу. Единственное моё неправильное решение было это заходить на этот форум и терять время. |
Посмотри лошадь как я пытался объяснить людям то что знал и как можно понятнее.
http://javascript.ru/forum/study/452...x-s-nulya.html Человеческим языком и не через китайский переводчик. Если понадобились бы скриншоты или прочие диаграммы, то и их бы сделал. А они заходят в тему со своими сме*ерочками. Или китайцы мимикрируют в русскоязычных или алкоголики, мозг пропили. |
BETEPAH исправляется. Уже лучше на примере показал.
|
nerv_,
вот какой он - первый кармаслив :thanks: :dance: |
Часовой пояс GMT +3, время: 07:19. |