Рассмотрим этот пример кода Javascript:
a = new Array();
a['a1']='foo';
a['a2']='bar';
b = new Array(2);
b['b1']='foo';
b['b2']='bar';
c=['c1','c2','c3'];
console.log(a);
console.log(b);
console.log(c);
Результаты в консоли Firebug следующие:
Для a ('[]' нужно было развернуть, нажав кнопку "+" ):
[]
a1 "foo"
a2 "bar"
Для b:
[undefined, undefined]
Для c:
["c1", "c2", "c3"]
Мои вопросы:
- Я правильно использую синтаксис массива ['key'] = 'value'?
- Почему массив b работает как ожидалось?
- Почему массивы a и c отображаются по-разному в консоли? Также кажется, что jQuery не может выполнять итерацию через массив a с помощью метода .each().
- Не могли бы вы рекомендовать какие-либо хорошие руководства по работе с массивом Javascript?
ПРИМЕЧАНИЕ. Google Chrome Firebug отображает только [] для массива 'a', без возможности его расширения.
EDIT: Хорошо, кажется, что массивы в Javascript имеют только числовые ключи, поэтому добавление строки в качестве имени ключа делает объект из массива. Но почему не работает jQuery.each с ним?
$.each(a, function ()
{
alert ('derp');
})
Этот код, добавленный к script, не выдает предупреждений.