Многомерный массив одной строкой Java script

P2N

Новичок
Многомерный массив одной строкой Java script

PHP:
v_rank = new Array();
v_rank [-2] = "Очень плохо";
v_rank [-1] = "Плохо";
v_rank [0] = "Нормально";
v_rank [1] = "Хорошо";
v_rank [2] = "Отлично";
как записывать такие массивы в одну строку типа как в php

v_rank=([-2]=>'Очень плохо',[-1]=>'Плохо')
итд.. есть ли такая возможность в JS

p.s. v_rank=['Очень плохо','Плохо'] - не катит..
 

P2N

Новичок
какая разница какие индексы, а если такие были бы

v_rank ['lol']="kaka";
v_rank ['lols']="kakas";
 

Nicholas

Новичок
Отвечая на вопрос:
>> как записывать такие массивы в одну строку
Никак.

Отрицательные индексы - не есть хорошо.
 

Nicholas

Новичок
Автор оригинала: jonjonson
Почему?
Это мое сугубо личное мнение.


как пример:

PHP:
<script>
v_rank = new Array(); 

v_rank [-2] = "Очень плохо"; 
v_rank [-1] = "Плохо"; 
v_rank [0] = "Нормально"; 
v_rank [1] = "Хорошо"; 
v_rank [2] = "Отлично";


alert(v_rank.length);
</script>
Выведет не совсем то, что ожидалось
 

jonjonson

Охренеть
Мда... Особенности реализации.
PHP:
<script>
v_rank = new Array(); 

v_rank [0] = "Нормально"; 
v_rank [1] = "Хорошо"; 
v_rank [2] = "Отлично";
v_rank [50] = "Приплыли"; 

alert(v_rank.length);
</script>
Вернёт то же не совсем то, что ожидалось...
 

Nicholas

Новичок
Автор оригинала: jonjonson
Мда... Особенности реализации.
PHP:
<script>
v_rank = new Array(); 

v_rank [0] = "Нормально"; 
v_rank [1] = "Хорошо"; 
v_rank [2] = "Отлично";
v_rank [50] = "Приплыли"; 

alert(v_rank.length);
</script>
Вернёт то же не совсем то, что ожидалось...
вернет ИМЕННО ТО, что ожидалось.
Скрипт, при объявлении v_rank [50] = "Приплыли"; создаст энное количество элементов между третьим и пятидесятым элементом.

Можно проверить:

PHP:
<script>
v_rank = new Array(); 

v_rank [0] = "Нормально"; 
v_rank [1] = "Хорошо"; 
v_rank [2] = "Отлично";
v_rank [50] = "Приплыли"; 

for (i = 0; i < v_rank.length; i++)
  document.write(i+'='+v_rank[i]+'<br>'); 
</script>
Видно, что в массиве на самом деле 51 элемент.
 

jonjonson

Охренеть
Nicholas, опять же реализация. Я не просил создавать, а он создал. А вот при определении мной элементов -1 и -2 он их создал, но игнорирует...
 

Nicholas

Новичок
jonjonson а я чо? я ничего :)

Просто высказал свое мнение, что отрицательные индексы - зло :)
 

dimagolov

Новичок
Nicholas, ну почему сразу "никак"?
PHP:
// Это не массив, но тоже покатит
var arr= { '-1' : 'bb', '0' : 'zz', '1' : 'gg' };
alert (arr['-1'] + '\n' + arr['0'] + '\n' + arr['1']);
for (zz in arr) alert ('arr['+zz +']='+arr[zz]);
;)
 

berkut

Новичок
[offtop]for (zz in arr) - как меня напрегает такой синтаксис. гораздо круче былобы for (arr (in|as) zz)
 

Nicholas

Новичок
Автор оригинала: dimagolov
Nicholas, ну почему сразу "никак"?
PHP:
// Это не массив, но тоже покатит
var arr= { '-1' : 'bb', '0' : 'zz', '1' : 'gg' };
alert (arr['-1'] + '\n' + arr['0'] + '\n' + arr['1']);
for (zz in arr) alert ('arr['+zz +']='+arr[zz]);
;)
Я конечно понимаю, что в js - все сущности являются объектами.
Но если в данном конкретном случае требуется массив, то необходимо употреблять массив.
Иначе придется и необходимые методы в данном объекте прописывать.
 

dimagolov

Новичок
Nicholas, если не зацикливаться на свойстве length, а пользовать столь непривычный php-шникам for (zz in arr) то разницы в использовании как бы никакой, ну разве что дефолтно toString нету, ну а когда кроме alert(arr) она нужна?
 

Nicholas

Новичок
dimagolov У массивов есть кроме свойства длина, имеются достаточно хорошие методы :)
 

dimagolov

Новичок
Nicholas, подозреваю, что автору темы в данном конкретном случае нафиг не нужно ничего, кроме обращения к элементу по ассоциативному ключу.
 
Сверху