J'ai une chaîne comme
string = "firstName:name1, lastName:last1";
maintenant j'ai besoin d'un objet obj tel que
obj = {firstName:name1, lastName:last1}
Comment puis-je faire cela dans JS?
javascript
string
object
rahul
la source
la source
Réponses:
En fait, la meilleure solution consiste à utiliser JSON:
Documentation
JSON.parse(text[, reviver]);
Exemples:
1)
2)
3) Passer une fonction à JSON
la source
eval
plus tard.Votre chaîne ressemble à une chaîne JSON sans les accolades.
Cela devrait fonctionner alors:
la source
obj = eval('({' + str + '})');
Si je comprends bien:
Je suppose que le nom de la propriété est à gauche du signe deux-points et que la valeur de chaîne qu'elle prend est à droite.
Notez qu'il
Array.forEach
s'agit de JavaScript 1.6 - vous pouvez utiliser une boîte à outils pour une compatibilité maximale.la source
Cette façon simple ...
production
la source
si vous utilisez JQuery:
N'OUBLIEZ PAS: eval est mal! :RÉ
la source
eval
.globalEval: /** code **/ window[ "eval" ].call( window, data ); /** more code **/
Étant donné que la méthode JSON.parse () nécessite que les clés Object soient placées entre guillemets pour qu'elle fonctionne correctement, nous devrions d'abord convertir la chaîne en une chaîne au format JSON avant d'appeler la méthode JSON.parse ().
Cela fonctionnerait même si la chaîne a un objet complexe (comme le suivant) et il serait toujours converti correctement. Assurez-vous simplement que la chaîne elle-même est entourée de guillemets simples.
la source
Vous devez utiliser JSON.parse () pour convertir String en objet:
la source
Si vous avez une chaîne comme
foo: 1, bar: 2
vous pouvez la convertir en un objet valide avec:Merci à niggler dans #javascript pour cela.
Mise à jour avec des explications:
Documents MDN déroutants:
Démo: http://jsbin.com/hiduhijevu/edit?js,console
Fonction:
la source
J'ai implémenté une solution en quelques lignes de code qui fonctionne de manière assez fiable.
Avoir un élément HTML comme celui-ci où je veux passer des options personnalisées:
une fonction analyse les options personnalisées et renvoie un objet pour l'utiliser quelque part:
la source
data-
attribut au lieu de créer des attributs pseudo-personnalisés comme certains frameworks / bibliothèques.Cela fonctionnera:
Cependant, ce n'est pas efficace. Que se passe-t-il lorsque vous avez quelque chose comme ça:
split()
divisera «http». Je vous suggère donc d'utiliser un délimiteur spécial comme un tuyaula source
C'est du code universel, peu importe la longueur de votre entrée mais dans le même schéma s'il y a: séparateur :)
la source
J'utilise JSON5 et cela fonctionne plutôt bien.
La bonne partie est qu'il contient non
eval
et nonnew Function
, très sûr à utiliser.la source
Dans ton cas
la source
Le tableau "objets" aura tous les objets
la source
Je sais que c'est un ancien message mais je n'ai pas vu la bonne réponse à la question.
Vous pouvez maintenant utiliser
obj.firstName
etobj.lastName
pour obtenir les valeurs comme vous le feriez normalement avec un objet.la source