Tengo una cuerda como
string = "firstName:name1, lastName:last1";
ahora necesito un objeto obj tal que
obj = {firstName:name1, lastName:last1}
¿Cómo puedo hacer esto en JS?
javascript
string
object
rahul
fuente
fuente
Respuestas:
En realidad, la mejor solución es usar JSON:
Documentación
JSON.parse(text[, reviver]);
Ejemplos:
1)
2)
3) Pasar una función a JSON
fuente
eval
más tarde.Su cadena se ve como una cadena JSON sin las llaves.
Esto debería funcionar entonces:
fuente
obj = eval('({' + str + '})');
Si estoy entendiendo correctamente:
Supongo que el nombre de la propiedad está a la izquierda de los dos puntos y el valor de cadena que toma está a la derecha.
Tenga en cuenta que
Array.forEach
es JavaScript 1.6: puede utilizar un kit de herramientas para obtener la máxima compatibilidad.fuente
De esta manera simple ...
salida
fuente
si estás usando JQuery:
RECUERDE: eval es malvado! :RE
fuente
eval
.globalEval: /** code **/ window[ "eval" ].call( window, data ); /** more code **/
Dado que el método JSON.parse () requiere que las claves Object estén encerradas entre comillas para que funcione correctamente, primero tendríamos que convertir la cadena en una cadena con formato JSON antes de llamar al método JSON.parse ().
Esto funcionaría incluso si la cadena tiene un objeto complejo (como el siguiente) y todavía se convertiría correctamente. Solo asegúrate de que la cadena esté encerrada entre comillas simples.
fuente
Necesita usar JSON.parse () para convertir String en un objeto:
fuente
Si tiene una cadena como
foo: 1, bar: 2
puede convertirla en un obj válido con:Gracias a niggler en #javascript por eso.
Actualización con explicaciones:
Documentos MDN confusos:
Demostración: http://jsbin.com/hiduhijevu/edit?js,console
Función:
fuente
Implementé una solución en unas pocas líneas de código que funciona de manera bastante confiable.
Tener un elemento HTML como este donde quiero pasar opciones personalizadas:
una función analiza las opciones personalizadas y devuelve un objeto para usarlo en alguna parte:
fuente
data-
atributo en lugar de crear atributos pseudo-personalizados como algunos frameworks / bibliotecas.Esto funcionará:
Sin embargo, no es eficiente. Qué sucede cuando tienes algo como esto:
split()
dividirá 'http'. Así que te sugiero que uses un delimitador especial como tuberíafuente
Este es un código universal, no importa qué tan larga sea su entrada, sino en el mismo esquema si existe: separador :)
fuente
Estoy usando JSON5 , y funciona bastante bien.
Lo bueno es que contiene no
eval
y nonew Function
, muy seguro de usar.fuente
En tu caso
fuente
El conjunto de "objetos" tendrá todos los objetos
fuente
Sé que esta es una publicación antigua, pero no vi la respuesta correcta para la pregunta.
Ahora puede usar
obj.firstName
yobj.lastName
para obtener los valores como lo haría normalmente con un objeto.fuente