У меня есть строка как
string = "firstName:name1, lastName:last1";
теперь мне нужен один объект obj такой, что
obj = {firstName:name1, lastName:last1}
Как я могу сделать это в JS?
javascript
string
object
Рахул
источник
источник
Ответы:
На самом деле, лучшим решением является использование JSON:
Документация
JSON.parse(text[, reviver]);
Примеры:
1)
2)
3) Передача функции в JSON
источник
eval
позже.Ваша строка выглядит как строка JSON без фигурных скобок.
Это должно работать тогда:
источник
obj = eval('({' + str + '})');
Если я правильно понимаю:
Я предполагаю, что имя свойства находится слева от двоеточия, а строковое значение, которое оно принимает, - справа.
Обратите внимание, что
Array.forEach
это JavaScript 1.6 - вы можете использовать инструментарий для максимальной совместимости.источник
Это простой способ ...
вывод
источник
если вы используете JQuery:
ПОМНИТЕ: Эвал - это зло! : D
источник
eval
.globalEval: /** code **/ window[ "eval" ].call( window, data ); /** more code **/
Так как метод JSON.parse () требует, чтобы ключи объекта были заключены в кавычки, чтобы он работал правильно, нам сначала нужно преобразовать строку в строку в формате JSON перед вызовом метода JSON.parse ().
Это будет работать, даже если строка имеет сложный объект (как показано ниже), и все равно будет правильно преобразовываться. Просто убедитесь, что сама строка заключена в одинарные кавычки.
источник
Вам нужно использовать JSON.parse () для преобразования String в Object:
источник
Если у вас есть такая строка,
foo: 1, bar: 2
вы можете преобразовать ее в действительный объект с помощью:Спасибо Нигглеру в #javascript за это.
Обновление с объяснениями:
Запутанные документы MDN:
Демо: http://jsbin.com/hiduhijevu/edit?js,console
Функция:
источник
Я реализовал решение в несколько строк кода, которое работает достаточно надежно.
Имея такой HTML-элемент, где я хочу передать пользовательские параметры:
функция анализирует пользовательские параметры и возвращает объект, чтобы использовать его где-то:
источник
data-
атрибута вместо создания псевдо-пользовательских атрибутов, таких как некоторые фреймворки / библиотеки.Это будет работать:
Однако это не эффективно. Что происходит, когда у вас есть что-то вроде этого:
split()
разделит «http». Поэтому я предлагаю вам использовать специальный разделитель, как трубаисточник
Это универсальный код, независимо от того, насколько длинный ввод, но в той же схеме, если есть: separator :)
источник
Я использую JSON5 , и он работает довольно хорошо.
Хорошая часть не является она не содержит нет
eval
и нетnew Function
, очень безопасно использовать.источник
В твоем случае
источник
массив "objects" будет иметь все объекты
источник
Я знаю, что это старый пост, но не нашел правильного ответа на вопрос.
Теперь вы можете использовать
obj.firstName
и,obj.lastName
чтобы получить значения, которые вы обычно делаете с объектом.источник