Se eu tiver um objeto JS como:
var foo = { 'bar' : 'baz' }
Se eu sei que foo
possui essa estrutura básica de chave / valor, mas não sei o nome da chave, qual é a maneira mais fácil de obtê-la? for ... in
? $.each()
? Espero que haja algo melhor ....
javascript
jquery
sprugman
fonte
fonte
Respostas:
Se você deseja obter todas as chaves, introduziu o ECMAScript 5
Object.keys
. Isso é suportado apenas por navegadores mais novos, mas a documentação do MDC fornece uma implementação alternativa (que também usafor...in
btw):Obviamente, se você deseja chave e valor, então
for...in
é a única solução razoável.fonte
p
me dá a chave, mas como obtenho o valor da chave? Obrigado.Você iteraria dentro do objeto com um loop for:
Ou
fonte
foo[i]
ser"_proto_"
?foo[i]
sei
forsome string
?Você pode acessar cada chave individualmente sem iterar como em:
fonte
const [firstKey, ...rest] = Object.keys(obj);
Dado o seu objeto:
Para obter
bar
, use:Para obter
baz
, use:Assumindo um único objeto
fonte
Um liner para você:
fonte
Esta é a maneira mais simples e fácil. É assim que fazemos isso.
Agora você pode iterar nos objetos e acessar valores como abaixo:
fonte
TypeError
se espera que uma chave seja um número. Porque chaves são sempre strings.Eu estava tendo o mesmo problema e foi isso que funcionou
fonte
var value = person[key];
? Dessa forma, você não precisa saber a chave do valor que deseja extrair.Consulte MDN
fonte
Não vejo mais nada além
for (var key in foo)
.fonte
A maneira mais fácil é usar o Underscore.js:
Sim, você precisa de uma biblioteca extra, mas é tão fácil!
fonte
Não há outra maneira senão
for ... in
. Se você não quiser usar isso (talvez porque seja marginalmente ineficiente ter que testarhasOwnProperty
em cada iteração?), Use uma construção diferente, por exemplo, uma matriz de kvp's:fonte
Como você mencionou
$.each()
, aqui está uma abordagem prática que funcionaria no jQuery 1.6+:fonte
Object.keys () O método Object.keys () retorna uma matriz das propriedades enumeráveis de um determinado objeto, na mesma ordem que a fornecida por um loop for ... in (a diferença é que um loop for enumera propriedades também na cadeia de protótipos).
Object.values () O método Object.values () retorna uma matriz dos valores de propriedades enumeráveis de um determinado objeto, na mesma ordem que a fornecida por um loop for ... in (a diferença é que um loop for enumera propriedades na cadeia de protótipos).
Para mais, por favor clique aqui
fonte
use para cada loop para acessar chaves em Object ou Maps em javascript
Nota: você também pode usar
vai lhe dar como esta saída:
[Barra];
fonte
Bem,
$.each
é uma construção de biblioteca, enquantofor ... in
é js nativo, que deve ser melhorfonte
Você pode usar a funcionalidade Object.keys para obter as chaves como:
fonte
para mostrar como uma string, basta usar:
fonte
melhor maneira de obter a chave / valor do objeto.
fonte