Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сделать из строки массик (https://javascript.ru/forum/misc/56319-sdelat-iz-stroki-massik.html)

Verbal 10.06.2015 06:53

Сделать из строки массик
 
Добрый день у меня есть массив в php, следующего вида вида
Array
(
    [event-training] => training
    [time] => Array
        (
            [0] => 11
            [1] => 16
        )

)

Я декодером из него получаю строку в js(всё передаётся успешно, интересует именно как сделать массив в jquery):
{"event-training":"training","time":["11","16"]}


Мне нужен массив из этого, я пробовал так:
success: function(results){
              var arr = jQuery.map(results, function(el) { return el; });
          }


но такой способ выдал следующую ошибку:

Uncaught TypeError: Cannot use 'in' operator to search for '47' in {"event-training":"training","time":["11","16"]}


Другие способы тоже не помогли.

Как эту строку распарсить так.
Что бы массив в js получился такой же. и например я мог вызвать
arr.event-training или arr['event-training'] (как будет правильнее сделать).

ksa 10.06.2015 08:21

Цитата:

Сообщение от Verbal
Я декодером из него получаю строку в js(всё передаётся успешно, интересует именно как сделать массив в jquery):
{"event-training":"training","time":["11","16"]}

Не совсем понятно, что тебе нужно... Ты из объекта собираешься сделать массив? Или не знаешь как взять массив ["11","16"]?

Verbal 10.06.2015 08:25

Я не знаю как сделать так что бы в js можно было сделать массив.

т.е. что бы можно было вызвать arr['event-training'] и например arr['time'][0]. сейчас это строка.

ksa 10.06.2015 08:33

Цитата:

Сообщение от Verbal
Я не знаю как сделать так что бы в js можно было сделать массив.

т.е. что бы можно было вызвать arr['event-training'] и например arr['time'][0]. сейчас это строка.

Ну массива ты никакого не получишь, т.к. у тебя объект... :) А преобразовать можно так

var str='{"event-training":"training","time":["11","16"]}';
var obj=JSON.parse(str);
alert(obj['event-training']);
alert(obj['time'][0]);

Verbal 10.06.2015 08:44

спасибо большое, помогло)

laimas 10.06.2015 09:16

Цитата:

Сообщение от Verbal
всё передаётся успешно, интересует именно как сделать массив в jquery

Передавать клиенту не ассоциативный, а индексный массив, если на клиенте требуется массив, а не объект.

Verbal 10.06.2015 14:12

я в принципе задачу решил, но тем не менее, мне заинтересовало ваше решения, я возвращаю данные с помощью использования json_encode, вроде как он в массив преобразует, как тогда преобразовать его в массив правильно в php?

ksa 10.06.2015 14:18

Verbal, никак не пойму я вопрос твой... :(

Verbal 10.06.2015 14:27

вот что пишет laimas
Цитата:

Сообщение от laimas (Сообщение 374581)
Передавать клиенту не ассоциативный, а индексный массив, если на клиенте требуется массив, а не объект.

Как передать индексный массив? Может самому его надо как-то сделать? Конкатенацией строк можно, но я пытался вроде и у меня даже не срабатывало создания массива js в php. Да и строк так получалось больше и менее читабельно было.

ksa 10.06.2015 14:52

Цитата:

Сообщение от Verbal
Как передать индексный массив?

var a=[
   "Вася",
   "Петя",
   "Лена"
];
var str=JSON.stringify(a);
alert(str);


Цитата:

Сообщение от Verbal
Может самому его надо как-то сделать?

Можно и самому... :yes:
Главное соблюдать формат json.


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