Получить массив ключей объекта
Я хотел бы получить ключи объекта JavaScript в виде массива, либо в jQuery, либо в чистом JavaScript.
есть ли менее трудоемкий способ, чем этот?
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
5 ответов:
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }; var keys = Object.keys(foo); // ['alpha', 'beta'] // (or maybe some other order, keys are unordered).
использовать
Object.keys
.это функция ES5. Это означает, что он работает во всех современных браузерах, но не будет работать в устаревших браузерах.
ES5-shim имеет реализация
Object.keys
вы можете украсть
вы можете использовать jQuery
$.map
.var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }, keys = $.map(foo, function(v, i){ return i; });
конечно,
Object.keys()
- это лучшие способ получения ключей объекта. Если он недоступен в вашей среде, это может быть тривиально обернутой используя код, например, в вашем примере (за исключением того, что вам нужно будет учитывать, что ваш цикл будет повторяться по всем свойствам в цепочке прототипов, в отличие отObject.keys()
' s поведение).однако, ваш пример кода...
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }; var keys = []; for (var key in foo) { keys.push(key); }
...может быть модифицированный. Вы можете выполнить задание в переменная часть.
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' }; var keys = [], i = 0; for (keys[i++] in foo) {}
конечно, это поведение отличается от того, что
Object.keys()
на самом деле (jsFiddle). Вы могли бы просто использовать прокладка на документации MDN.
Я не знаю о менее подробном, но я был вдохновлен, чтобы принудить следующее на одну строку с помощью однострочного запроса, не знаю, насколько это питон;)
var keys = (function(o){var ks=[]; for(var k in o) ks.push(k); return ks})(foo);
резюме
для получения всех ключей объекта вы можете использовать
Object.keys()
.Object.keys()
принимает объект в качестве аргумента и возвращает массив всех ключей.пример:
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
в приведенном выше примере мы храним массив ключей в keys const. Затем мы можем легко получить доступ к количеству свойств объекта, проверив длину массива ключей.
получение значений с:
Object.values()
дополнительные функции
Object.keys()
иObject.values()
. Эта функция принимает объект в качестве аргумента и возвращает массив значений. Например:const object = { a: 'random', b: 22, c: true }; console.log(Object.values(object));