powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Массивы и указатели.
10 сообщений из 10, страница 1 из 1
(JS) Массивы и указатели.
    #33351830
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Элементы массивов вроде всегда указатели. Мне нужен двумерный массив. Я столкнулся с такой байдой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
a = new Array();
m = new Array();

a[ 0 ] =  1 ;
a[ 1 ] =  2 ;
m[ 0 ] = a;

a[ 0 ] = "Bla";
a[ 1 ] = "Yo";
m[ 1 ] = a;
В итоге обратившись к m[0][0] мы получим тоже, что и к m[1][0]. Тоесть слово Bla.

Лечится так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
a = new Array();
a2 = new Array();
m = new Array();

a[ 0 ] =  1 ;
a[ 1 ] =  2 ;
m[ 0 ] = a;

a2[ 0 ] = "Bla";
a2[ 1 ] = "Yo";
m[ 1 ] = a;
Но можноль обойтись без создания нового массива?
...
Рейтинг: 0 / 0
(JS) Массивы и указатели.
    #33351871
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так не проще?

m = [[1, "Bla"], [0, "Yo"]] ;

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
(JS) Массивы и указатели.
    #33351897
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle
Так не проще?

m = [[1, "Bla"], [0, "Yo"]] ;

Posted via ActualForum NNTP Server 1.3
Ты знаешь, там на самом деле ассоциированный массив. Тоесть вместо m[0][1] используется что-то типа m["ru"]["value"].

Про m = [[1, "Bla"], [0, "Yo"]] ; не знал. Спасибо большое. Наверняка пригодится.
...
Рейтинг: 0 / 0
(JS) Массивы и указатели.
    #33351946
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется в индексах массива могут быть только целые положительные числа.
Индекс через переменную передается, а m["ru"]["value"] со строками не
пройдет, ну во всяком случае, не встречал похожего.



Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
(JS) Массивы и указатели.
    #33351976
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle
Кажется в индексах массива могут быть только целые положительные числа.
Индекс через переменную передается, а m["ru"]["value"] со строками не
пройдет, ну во всяком случае, не встречал похожего.



Posted via ActualForum NNTP Server 1.3
А ты попробуй. Великолепно всё работает.
...
Рейтинг: 0 / 0
(JS) Массивы и указатели.
    #33351993
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал. Действительно работает. Почти работает. По крайней мере первые два алерта выводят то что надо. А вот третий.... Третий уже не совсем то....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
m = new Array();

m['abc'] = 'test abc' ;
m['def'] =  333  ;

alert ( m['def'] ) ;
alert ( m['abc'] ) ;
alert ( m.length ) ; // выводит  0  (нуль)
Или я чего то не догоняю, или m это не массив... Может быть, уважаемые гуры объяснят?


При использовании же цифровых индексов картинка более правильная
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
n = new Array();

n[ 0 ] = 'test abc' ;
n[ 1 ] =  333  ;

alert ( n[ 0 ] ) ;
alert ( n[ 1 ] ) ;
alert ( n.length ) ; // двойка, как и положено

PS прогнал в ИЕ6 и ФФ1.0.7
...
Рейтинг: 0 / 0
(JS) Массивы и указатели.
    #33351995
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleили m это не массив...

Точнее, m['def'] и m['abc'] не являются элементами массива m. Тогда что это?
...
Рейтинг: 0 / 0
(JS) Массивы и указатели.
    #33353614
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle vkleили m это не массив...

Точнее, m['def'] и m['abc'] не являются элементами массива m. Тогда что это?
По всей видимости это - объект. А m["abc"] эквиваленто m.abc
...
Рейтинг: 0 / 0
(JS) Массивы и указатели.
    #33354961
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учите матчасть, господа...
Любой объект в JS, в том числе и массив, можно дополнять своими свойствами. Можете с таким же успехом сделать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
m = new Object();

m['abc'] = 'test abc' ;
m['def'] =  333  ;

alert ( m['def'] ) ;
alert ( m['abc'] ) ;

но! как правильно здесь кто-то указал, Array - это на самом деле фикция, т.к. элементы массива доступны не по индексу, а как элементы Hashtable, т.е. если сделать for (element in array), то выберутся все элементы массива + все его свойства, т.е. элементы массива по сути являются такими же свойствами.
...
Рейтинг: 0 / 0
(JS) Массивы и указатели.
    #33356326
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасиб большое.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (JS) Массивы и указатели.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]