Получить массив ключей объекта


Я хотел бы получить ключи объекта JavaScript в виде массива, либо в jQuery, либо в чистом JavaScript.

есть ли менее трудоемкий способ, чем этот?

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

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);
}

jsFiddle.

...может быть модифицированный. Вы можете выполнить задание в переменная часть.

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

jsFiddle.

конечно, это поведение отличается от того, что 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));