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

Aetae 10.11.2014 07:13

cript, в js нет понятия "многоуровневый массив". Есть массив( [] ). Есть объект( {} ). Ведут они себя (если утрировать) одинаково, только в первом ключи - цифры, во втором произвольные строки.
Если в хотите имитировать "многоуровневый массив" вы должны один массив\объект положить в другой..
a = {
  key1: [
    "index"
  ], 
  key2: [
    "index2"
  ]
}

cript 10.11.2014 08:42

Цитата:

Сообщение от Aetae (Сообщение 340115)
cript, в js нет понятия "многоуровневый массив". Есть массив( [] ). Есть объект( {} ). Ведут они себя (если утрировать) одинаково, только в первом ключи - цифры, во втором произвольные строки.
Если в хотите имитировать "многоуровневый массив" вы должны один массив\объект положить в другой..
a = {
  key1: [
    "index"
  ], 
  key2: [
    "index2"
  ]
}

В таком случае добавить к индексу key1 в конец новое значение можно так a['key1'] = 'new';
Удалить первое значение delete a['key1'][0];
Проверить на наличие значений в ключе key1 if(a['key1'] != undefined)?

рони 10.11.2014 08:59

cript,
проверить if('key1' in a && a['key1'].length)
удалить добавить смотрите работу с массивом

Aetae 10.11.2014 09:00

cript, нет по всем пунктам кроме последнего(но и он - плох).
По ключу key1 в объект a находится массив.
Делая так: a['key1'] = 'new' вы заменяте массив на строку 'new', а ничего никуда не добавляете. "Равно" - это "равно", а не "добавить".
Если вы хотите добавить значение в массив по ключу key1 и с индексом 0 - так и следует писать a['key1'][0] = 'new', а лучше востпользоваться специальным методом массива, a['key1'].push('new'). Для удаления из массива также нельзя(не хорошо) использовать delete, т.к. индексы при удалении через delete не пересчитываются. Забрать первое значение: a['key1'].shift(), последнее: a['key1'].pop() .

А вообще сдаётся мне что вы нифигашеньки не читали никаких статей или учебников.
http://learn.javascript.ru/array
http://learn.javascript.ru/object
http://learn.javascript.ru/array-methods

cript 10.11.2014 10:10

Благодарю за ответы, разобрался

kostyanet 11.11.2014 15:19

Нет никаких массивов в скриптах, это голимые коллекции. Даже если оно посчитает length == 100500 после arr[100500]=1, это - рендер, а там - в кишках - 1 элемент. js только изображает настоящий массив чем и сбивает своих мемберов с толку.

Один раз напоролся на это дело как те одноглазые на сук. Казалось бы у меня есть "двумерный массив", ну значит положить его в лист екзеля должно быть делом одного метода. Так х нанэ. Одним методом можно положить двумерный массив, а не коллекцию коллекций. Коллекцию надо итерировать, дрочить то есть.

С другой стороны применения таким православным массива в народе нет. Народ нормально понимает только коллекции.


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