Eu tenho uma string como
string = "firstName:name1, lastName:last1";
agora eu preciso de um objeto obj tal que
obj = {firstName:name1, lastName:last1}
Como posso fazer isso em JS?
javascript
string
object
rahul
fonte
fonte
Respostas:
Na verdade, a melhor solução é usar JSON:
Documentação
JSON.parse(text[, reviver]);
Exemplos:
1)
2)
3) Passando uma função para JSON
fonte
eval
mais tarde.Sua sequência se parece com uma sequência JSON sem os chavetas.
Isso deve funcionar então:
fonte
obj = eval('({' + str + '})');
Se estou entendendo corretamente:
Estou assumindo que o nome da propriedade está à esquerda dos dois pontos e o valor da string que assume é à direita.
Observe que
Array.forEach
é o JavaScript 1.6 - você pode usar um kit de ferramentas para obter compatibilidade máxima.fonte
Desta maneira simples ...
resultado
fonte
se você estiver usando JQuery:
LEMBRE-SE: eval é mau! : D
fonte
eval
.globalEval: /** code **/ window[ "eval" ].call( window, data ); /** more code **/
Como o método JSON.parse () exige que as chaves Object sejam incluídas entre aspas para que funcione corretamente, primeiro precisamos converter a sequência em uma sequência formatada em JSON antes de chamar o método JSON.parse ().
Isso funcionaria mesmo se a string tivesse um objeto complexo (como o seguinte) e ainda assim fosse convertida corretamente. Apenas verifique se a cadeia de caracteres está entre aspas simples.
fonte
Você precisa usar JSON.parse () para converter String em um Objeto:
fonte
Se você tiver uma string como essa,
foo: 1, bar: 2
poderá convertê-la em um objeto válido com:Graças a niggler em #javascript por isso.
Atualize com explicações:
Documentos MDN confusos:
Demo: http://jsbin.com/hiduhijevu/edit?js,console
Função:
fonte
Eu implementei uma solução em algumas linhas de código que funcionam de maneira bastante confiável.
Ter um elemento HTML como este onde eu quero passar opções personalizadas:
uma função analisa as opções personalizadas e retorna um objeto para usá-lo em algum lugar:
fonte
data-
atributo em vez de criar atributos pseudo-personalizados, como algumas estruturas / bibliotecas.Isso funcionará:
No entanto, não é eficiente. O que acontece quando você tem algo parecido com isto:
split()
irá dividir 'http'. Então eu sugiro que você use um delimitador especial como pipefonte
Este é um código universal, não importa quanto sua entrada seja longa, mas no mesmo esquema, se houver: separador :)
fonte
Estou usando JSON5 , e funciona muito bem.
A parte boa é que ele contém não
eval
e nãonew Function
, muito seguro de usar.fonte
No seu caso
fonte
A matriz "objects" terá todos os objetos
fonte
Sei que este é um post antigo, mas não encontrei a resposta correta para a pergunta.
Agora você pode usar
obj.firstName
eobj.lastName
obter os valores como faria normalmente com um objeto.fonte