Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Многоуровневый массив (https://javascript.ru/forum/dom-window/51479-mnogourovnevyjj-massiv.html)

cript 07.11.2014 23:56

Многоуровневый массив
 
Приветствую!
//Создаем два массива
a1 = []; a2= [];
//Добавляем в конец новое значение:
a1[a1.length] = var;
a2[a2.length] = var2;
//Считываем есть ли в массиве элементы
if(a1.length == 1) && (a2.length == 1)){...}
//Удаляем первое значение 
a1.splice(0,1); 
a2.splice(0,1);

Подскажите, как это все реализовать под многоуровневый массив?
То есть вместо этих двух массивов нужен один вида a[key1][0], a[key2][0]

kostyanet 08.11.2014 10:33

В какой еще конец? В JS нельзя добавить элемент элемент массива с произвольным индексом. То есть можно, но результат будет неожиданным применительно к .length

Нормально для этого используют arr.push(value); а для удаления первого arr.shift()

kostyanet 08.11.2014 10:35

Цитата:

Сообщение от cript
То есть вместо этих двух массивов нужен один вида a[key1][0], a[key2][0]

У вас нет иерархии, или ее не видно. Продолжайте юзать 2 массива параллельно.

Aetae 08.11.2014 10:46

Наверное имеется ввиду это:
//Создаем два массива
a = [[], []];
//Добавляем в конец новое значение:
a[0].push('var');
a[1].push('var2');
//Считываем есть ли в массиве элементы
if(a[0].length > 0 && a[1].length > 0){...}
//Удаляем первое значение
a[0].shift();
a[1].shift();

kostyanet 08.11.2014 10:55

Все равно когерентности не будет, а ТС ее и хочет. Ну чтобы a1 был связан с а2.

cript 09.11.2014 01:04

Нужно чтобы вместо двух массивов был всего один, то есть на данный момент у меня a1[0] = 'index'; a2[0] = 'index2'; , а нужно
a[key1][0] = 'index' , a[key2][0] = 'index2'

рони 09.11.2014 01:10

cript,
var a = [];
a['key1'] = ['index'];
a['key2'] = ['index2'];
alert(a['key1'][0]);
alert(a['key2'][0]);

Safort 09.11.2014 01:11

var a = [['index'], ['index2']];

alert(a[0][0]); // index
alert(a[1][0]); // index2

Safort 09.11.2014 01:13

Ну что за ерунда? Опять опоздал на меньше чем минуту(
рони, ты выиграл(

рони 09.11.2014 01:59

Safort,
непереживай, зато ты понимаешь что пишет kobezzza :) а я только догадываюсь :lol:


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