Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   пробразование строки в объект (https://javascript.ru/forum/misc/44921-probrazovanie-stroki-v-obekt.html)

Cache 06.02.2014 19:16

пробразование строки в объект
 
Добрый день, подскажите, как более грамотно и коротко преобразовать строку в объект
var str='any_string';
if(typeof(str)=='string'){
	var arr=[];
	arr.push(str);
	str=arr;
};

kostyanet 06.02.2014 19:24

var str='any_string';
if(typeof(str)=='string')
	str=[''+str];


Про {} синтаксис оригинала умалчивает.

Cache 06.02.2014 19:26

Цитата:

Сообщение от kostyanet (Сообщение 296354)
var str='any_string';
if(typeof(str)=='string')
	str=[''+str];


Про {} синтаксис оригинала умалчивает.

Спасибо, а если можно, чуть прокомментируйте, не совсем понял как это работает

kostyanet 06.02.2014 19:29

Точно так же как у вас, только без пересылок.

На случай чтобы в массив не записался ref мы его унарно обосс... убиваем. Другими словами typeof вообще не требуется если вам заведомо на входе нужен object Array

Cache 06.02.2014 19:31

Цитата:

Сообщение от kostyanet (Сообщение 296356)
Точно так же как у вас, только без пересылок.

На случай чтобы в массив не записался ref мы его унарно обосс... убиваем. Другими словами typeof вообще не требуется если вам заведомо на входе нужен object Array

честно говоря, совсем запутался...
данные могут придти как объект (массив) или как строка, для этого и проверка, если строка, преобразуем в массив

по возможности дайте ссыль где об этом можно почитать, а то я себя совсем кипитильником после ваших слов чувствую

kostyanet 06.02.2014 19:39

Ну тогда проверяйте на тип. Если строка - сделать ее элементом массива и все.

str=[str];

''+str делается чисто ритуально. Неизвестно какой будет контекст, какой-то калбэк или что там еще и мы явно показываем скрипту что хотим сделать строку - строкой но в массиве [].

рони 06.02.2014 19:41

Цитата:

Сообщение от kostyanet
str=[''+str];

кавычки зачем?

kostyanet 06.02.2014 19:48

В контексте проверки на строку кавычки не нужны, конечно. Это, я ж написал, шорткат преобразования в строку.

s.toString() // канон
''+s // неканон

kostyanet 06.02.2014 19:50

И вообще строка тоже массив.

console.log(str[6]); // r

Кавычки с php. Там запросто в массив запишется ref, тип которого is_string() покажет труе. А если в массив запишется неконтролирумая ссылка, то где-то значит болтик открутится и задница чья-то отвалится.

danik.js 06.02.2014 20:00

Цитата:

Сообщение от kostyanet
Кавычки с php

Причем тут PHP?
Подытожим (с учетом корректировки форматирования):
var str = 'any_string';
if (typeof str === 'string')
    str = [str];


Ну и соответственно str - неудачное имя переменной, в которй в итоге будет массив )


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