Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   string to array (https://javascript.ru/forum/misc/21491-string-array.html)

Nightmare 12.09.2011 14:09

string to array
 
var str = "arr[s][m1]";

на выходе
arr[s][m1] только массивом. (учитывать множественную вложенность , т.е. nested sets)

Делаю (Array)(str) - ["arr[s][m1]"]
если (Object)(str) - отдельный символ как элемент массива.

Gozar 12.09.2011 14:54

А что это вы тут делаете?!

Для того чтобы вложить один массив в другой, а вернее в твоем случае объект в объект нужно сделать что-то вроде:
var arr  = {s:{m1:15}};
alert(arr['s']['m1']);


Из чего следует: - А что это вы тут делаете?!

Nightmare 12.09.2011 15:06

у менять есть input, name в которого именно такой, и я хочу разбить как норм массив. В этом и состоится вопрос

Gozar 12.09.2011 15:12

В js нет вложенных массивов и массивов с ключами отличными от цифровых. Зато в нем есть объекты.

Следи за мыслью:
var arr = {};
arr.s = {};
arr.s.m1 = 15;

var arr2 = {};
arr2['s'] = {};
arr2['s']['m1'] = 16;
alert([arr.s.m1, arr2['s']['m1'],arr2.s.m1]);


Тебе нужен парсер иначе получишь ошибку, нельзя перескачить промежуточный s(это тоже объект) и создать сразу вложенность.

Триви 12.09.2011 15:26

А такой пример не понятней будет?

var arr = {
  0:{id:"1",color:"Red"},
  1:{id:"2",color:"Green"},
  3:{id:"3",color:"Blue"}
};

alert(arr[1].id + " " + arr[1].color);

Nightmare 12.09.2011 15:30

может быть
arr
arr[s]
arr[s][s1]

и мне надо как-то уловить это:
arr = new Array(s = new Array(s1))

Триви 12.09.2011 15:38

Цитата:

Сообщение от Nightmare (Сообщение 126116)
может быть
arr
arr[s]
arr[s][s1]

и мне надо как-то уловить это:
arr = new Array(s = new Array(s1))


var arr = {
  s:{s1:"ass1",s2:"ass2",s3:"ass3"}
};
alert(arr.s.s2);

Gozar 12.09.2011 15:45

Цитата:

Сообщение от Nightmare (Сообщение 126116)
уловить это:
arr = new Array(s = new Array(s1))

улови пожалуйста:
Цитата:

Сообщение от Gozar (Сообщение 126109)
В js нет вложенных массивов и массивов с ключами отличными от цифровых. Зато в нем есть объекты.

отсюда следует:
arr = {} //объект

и вообще заканчивай с new ->
arr = [];

Gozar 12.09.2011 15:48

Тебе нужен объект!, это понятно?

Триви 12.09.2011 15:54

Цитата:

Сообщение от Gozar (Сообщение 126109)
В js нет вложенных массивов и массивов с ключами отличными от цифровых.

Иными словами вот так сделать нельзя:
s:[s1:["ass1", "ass2", "ass3"]]


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