Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Массивы и строковые индексы (https://javascript.ru/forum/misc/54174-massivy-i-strokovye-indeksy.html)

FanAizu 06.03.2015 22:26

Массивы и строковые индексы
 
Подскажите, пожалуйста, не нашел нигде про такой момент информацию:
в массив можно добавлять свойства, как в объекты, например,
var test = [2, 10, 11];

test.myProp = 'hello';
test.['myProp2'] = 'world';


Тут все понятно. А если я присвою строковый индекс, но он будет числовой строкой, то интерпретатор воспримет его, как индекс массива или сделает свойством, как в объектах?:
test['10'] = 'test';

То есть, когда мы добавляем свойства, как в примере свойства 'myProp' и 'myProp2', то они становятся именно свойствами, не влияя на значение length массива, а что касательно случая со свойством test['10'], станет ли оно индексом массива или свойством, как в объектах и не повлияет на length?
Методом пробы test['10'] работает, как индекс массива и влияет на length, но хотелось бы быть уверенным, может где-то об этом говорится в доках, а то не хочется юзать не зная, что делаешь и что происходит. Спасибо.

Decode 07.03.2015 01:39

Вот тут про это написано: http://learn.javascript.ru/array#в...массива

FanAizu 07.03.2015 02:37

Цитата:

Сообщение от Decode (Сообщение 359961)
Вот тут про это написано: http://learn.javascript.ru/array#в...массива

не, в том-то и дело, что не написано.

2chan 09.03.2015 14:30

Так сложно самому попробовать?
var a = []; /* создаём массив */
a[0] = 'Ноль как число',  // Ключ 0, число. 
a['0'] = 'Ноль как строка'; // Ключ "0", строка.
console.log(a[0], a['0']); // (Firefox) => "Ноль как строка" "Ноль как строка", значение a[0] перезаписалось

Не знаю приводятся числа к строкам, или строки к числам, но разницы между a[10] и a['10'] - нет.

Erolast 09.03.2015 14:52

Цитата:

А если я присвою строковый индекс, но он будет числовой строкой, то интерпретатор воспримет его, как индекс массива или сделает свойством, как в объектах?
Это одно и то же.
Цитата:

не повлияет на length?
На length ничто не влияет. length равно последнему числовому индексу + 1


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