Obter matriz de chaves do object

Eu gostaria de obter as chaves de um object JavaScript como uma matriz, seja em jQuery ou JavaScript puro.

Existe uma maneira menos detalhada do que isso?

var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }; var keys = []; for (var key in foo) { keys.push(key); } 

 var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }; var keys = Object.keys(foo); // ['alpha', 'beta'] // (or maybe some other order, keys are unordered). 

Use Object.keys .

Este é um recurso do ES5. Isso significa que funciona em todos os navegadores modernos, mas não funcionará em navegadores legados .

O ES5-shim tem uma implementação de Object.keys você pode roubar

Você pode usar o $.map do jQuery.

 var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }, keys = $.map(foo, function(v, i){ return i; }); 

Obviamente, Object.keys() é a melhor maneira de obter as chaves de um Objeto. Se ele não estiver disponível em seu ambiente, ele pode ser banhado de forma trivial usando código como em seu exemplo (exceto se você precisar levar em consideração que seu loop iterará todas as propriedades da cadeia de protótipos, ao contrário de Object.keys() . comportamento).

No entanto, seu código de exemplo …

 var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }; var keys = []; for (var key in foo) { keys.push(key); } 

jsFiddle .

… poderia ser modificado. Você pode fazer a atribuição diretamente na parte variável .

 var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }; var keys = [], i = 0; for (keys[i++] in foo) {} 

jsFiddle .

Naturalmente, esse comportamento é diferente do que Object.keys() realmente faz ( jsFiddle ). Você poderia simplesmente usar o calço na documentação do MDN .

Eu não sei sobre menos verboso, mas eu fui inspirado a coagir o seguinte em uma linha pelo pedido de uma linha, não sei como é Python, embora;)

 var keys = (function(o){var ks=[]; for(var k in o) ks.push(k); return ks})(foo); 

Resumo

Para obter todas as chaves de um object, você pode usar Object.keys() . Object.keys() usa um object como argumento e retorna uma matriz de todas as chaves.

Exemplo:

 const object = { a: 'string1', b: 42, c: 34 }; const keys = Object.keys(object) console.log(keys); console.log(keys.length) // we can easily access the total amount of properties the object has