Инициализация массива значениями одной строкой

Magz

Новичок
Инициализация массива значениями одной строкой

Здравствуйте, уважаемые знатоки. Инетрнетозритель из Москвы интересуется. Есть у него код, который создает массив и два элемента массива с ключами 2 и 4:
Код:
        var MyArr = new Array();
        MyArr[2] = new Array({a:'a12', b:'b12'}, {a:'a22', b:'b22'});
        MyArr[4] = new Array({a:'a14', b:'b14'}, {a:'a24', b:'b24'});
        alert (MyArr[2][0].b);
В данном случае, alert нам вернет "b12".
Зритель из Москвы спрашивает: "А можно ли записать инициализацию такого массива одной строкой"?
Спасибо :)
 

BRat

o_0
Знаток из Москвы отвечает: "Можно, но некрасиво"
var MyArr = [,,[{a:'a12', b:'b12'}, {a:'a22', b:'b22'}],,[{a:'a14', b:'b14'}, {a:'a24', b:'b24'}]
 

Magz

Новичок
Знаток не из Москвы, знаток из Североморска :) Но все равно спасибо. Правда, мне такой способ не подойдет - в качестве ключей будут выступать id-шки :)
 

BRat

o_0
Малоли что в профиле написано.. некоторые вон в Уганде живут ..)

ты не массив сделай, а обьект
{'2':{}, '4':{}}
 

weregod

unserializer
BRat
> ты не массив сделай, а обьект

+1,
в первом посте они же и используются
нужно осмыслить и развить
 

Magz

Новичок
Про объект понятно, вопросов нет. Однако, если к массиву я могу обратиться
Код:
var a = 2;
alert (MyArr[a]);
то с объектом такой номер не пройдет. Только циклом перебирать. Или я чего-то не знаю? :)
 

Magz

Новичок
Тогда встает другой вопрос по синтаксису. У меня каждый элемент массива является, в свою очередь, массивом. Записи
Код:
var MyArr = new Array('2': new Array('0':{a:'a2', b:'b2'}, '1':{a:'a4', b:'b4'}));
var MyArr = new Array('2':Array('0':{a:'a2', b:'b2'}, '1':{a:'a4', b:'b4'}));
var MyArr = new Array('2':{'0':{a:'a2', b:'b2'}, '1':{a:'a4', b:'b4'}});
возвращают ошибку! Как написать-то? :)
 

Magz

Новичок
Гы :) Прочитал внимательно волшебную фразу "ты не массив сделай, а обьект", и все получилось:
Код:
         var MyArr = {2: [{a:'a02', b:'b02'}, {a:'a12', b:'b12'}], 4: [{a:'a04', b:'b04'}, {a:'a14', b:'b14'}]};
        alert (MyArr[2][0].a);
        alert (MyArr[2][1].a);
Итак, знатоки в очередной раз выиграли у интернетозрителей, деньги... остаются у знатоков :) Спасибо :)
 
Сверху