Многоуровневый массив
Приветствую!
//Создаем два массива 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] |
В какой еще конец? В JS нельзя добавить элемент элемент массива с произвольным индексом. То есть можно, но результат будет неожиданным применительно к .length
Нормально для этого используют arr.push(value); а для удаления первого arr.shift() |
Цитата:
|
Наверное имеется ввиду это:
//Создаем два массива a = [[], []]; //Добавляем в конец новое значение: a[0].push('var'); a[1].push('var2'); //Считываем есть ли в массиве элементы if(a[0].length > 0 && a[1].length > 0){...} //Удаляем первое значение a[0].shift(); a[1].shift(); |
Все равно когерентности не будет, а ТС ее и хочет. Ну чтобы a1 был связан с а2.
|
Нужно чтобы вместо двух массивов был всего один, то есть на данный момент у меня a1[0] = 'index'; a2[0] = 'index2'; , а нужно
a[key1][0] = 'index' , a[key2][0] = 'index2' |
cript,
var a = []; a['key1'] = ['index']; a['key2'] = ['index2']; alert(a['key1'][0]); alert(a['key2'][0]); |
var a = [['index'], ['index2']]; alert(a[0][0]); // index alert(a[1][0]); // index2 |
Ну что за ерунда? Опять опоздал на меньше чем минуту(
рони, ты выиграл( |
Safort,
непереживай, зато ты понимаешь что пишет kobezzza :) а я только догадываюсь :lol: |
рони,
ты про SS, ES6 или ещё что-то?) |
Safort,
да |
рони,
зря ты так, довольно интересные и полезные вещи) |
Цитата:
|
Цитата:
|
cript,
если вы про массив а - то он пуст и нет в нём ни одного элемента, а вот его свойства содержат массивы - и нет свойствах ни первого ни последнего - и лучше тогда a = {}; |
рони,
Цитата:
>>Регистрация: 27.05.2010 >>Всего сообщений: 6,770 Ну зачем же так шутить на ночь глядя? |
cript,
хочешь я дам ссылку на один очень качественный учебник по JavaScript'у? Там про массивы подробно объясняется. |
Safort,
чтоб вы поняли мой уровень - http://javascript.ru/forum/misc/4503...nerhtml-3.html |
Цитата:
Цитата:
a = {}; a = {key1:"index",key2:"index2"} Нужно к key1 добавить в конец новое значение, потом определить есть ли в key1 хоть одно значение, далее удалить первое значение. |
cript, в js нет понятия "многоуровневый массив". Есть массив( [] ). Есть объект( {} ). Ведут они себя (если утрировать) одинаково, только в первом ключи - цифры, во втором произвольные строки.
Если в хотите имитировать "многоуровневый массив" вы должны один массив\объект положить в другой.. a = { key1: [ "index" ], key2: [ "index2" ] } |
Цитата:
Удалить первое значение delete a['key1'][0]; Проверить на наличие значений в ключе key1 if(a['key1'] != undefined)? |
cript,
проверить if('key1' in a && a['key1'].length) удалить добавить смотрите работу с массивом |
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 |
Благодарю за ответы, разобрался
|
Нет никаких массивов в скриптах, это голимые коллекции. Даже если оно посчитает length == 100500 после arr[100500]=1, это - рендер, а там - в кишках - 1 элемент. js только изображает настоящий массив чем и сбивает своих мемберов с толку.
Один раз напоролся на это дело как те одноглазые на сук. Казалось бы у меня есть "двумерный массив", ну значит положить его в лист екзеля должно быть делом одного метода. Так х нанэ. Одним методом можно положить двумерный массив, а не коллекцию коллекций. Коллекцию надо итерировать, дрочить то есть. С другой стороны применения таким православным массива в народе нет. Народ нормально понимает только коллекции. |
Часовой пояс GMT +3, время: 11:40. |