пробразование строки в объект
Добрый день, подскажите, как более грамотно и коротко преобразовать строку в объект
var str='any_string'; if(typeof(str)=='string'){ var arr=[]; arr.push(str); str=arr; }; |
var str='any_string'; if(typeof(str)=='string') str=[''+str]; Про {} синтаксис оригинала умалчивает. |
Цитата:
|
Точно так же как у вас, только без пересылок.
На случай чтобы в массив не записался ref мы его унарно обосс... убиваем. Другими словами typeof вообще не требуется если вам заведомо на входе нужен object Array |
Цитата:
данные могут придти как объект (массив) или как строка, для этого и проверка, если строка, преобразуем в массив по возможности дайте ссыль где об этом можно почитать, а то я себя совсем кипитильником после ваших слов чувствую |
Ну тогда проверяйте на тип. Если строка - сделать ее элементом массива и все.
str=[str]; ''+str делается чисто ритуально. Неизвестно какой будет контекст, какой-то калбэк или что там еще и мы явно показываем скрипту что хотим сделать строку - строкой но в массиве []. |
Цитата:
|
В контексте проверки на строку кавычки не нужны, конечно. Это, я ж написал, шорткат преобразования в строку.
s.toString() // канон ''+s // неканон |
И вообще строка тоже массив.
console.log(str[6]); // r Кавычки с php. Там запросто в массив запишется ref, тип которого is_string() покажет труе. А если в массив запишется неконтролирумая ссылка, то где-то значит болтик открутится и задница чья-то отвалится. |
Цитата:
Подытожим (с учетом корректировки форматирования): var str = 'any_string'; if (typeof str === 'string') str = [str]; Ну и соответственно str - неудачное имя переменной, в которй в итоге будет массив ) |
Часовой пояс GMT +3, время: 08:58. |