Я хотел бы получить ключи объекта JavaScript в виде массива, либо в jQuery, либо в чистом JavaScript.
Есть ли менее многословный способ, чем этот?
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
javascript
ecmascript-5
Ричард
источник
источник
if(foo.hasOwnProperty(key))
, это то, что я бы сделал. Или используйте$.map
.for var in x
циклахОтветы:
Используйте
Object.keys
:Это особенность ES5. Это означает, что он работает во всех современных браузерах, но не будет работать в старых браузерах .
ES5-шим имеет реализацию
Object.keys
вы можете украстьисточник
Вы можете использовать JQuery
$.map
.источник
each
, если вы что-то делаете с ними.$.each(foo, function(index, value){/* do something with index */});
Конечно,
Object.keys()
это лучший способ получить ключи Объекта. Если он не доступен в вашей среде, это может быть тривиальным подкладками с помощью кода , например , как в вашем примере ( за исключением вы должны принять во внимание ваш цикл будет перебрать все свойства в цепочке прототипов, в отличие отObject.keys()
поведения «s).Тем не менее, ваш пример кода ...
jsFiddle .
... может быть изменено. Вы можете сделать назначение прямо в переменной части.
jsFiddle .
Конечно, это поведение отличается от того, что на
Object.keys()
самом деле ( jsFiddle ). Вы можете просто использовать прокладку в документации MDN .источник
var keys = [], i = 0; for (keys[i++] in foo) {}
+1hasOwnProperty()
проверке, конечно?Я не знаю о менее многословном, но я был вдохновлен привести следующее к одной строке запросом одной строки, хотя не знаю, насколько Pythonic это;)
источник
var enumerableKeysOnThePrototypeChain
;)for (keys[i++] in foo) {}
), потому что вы все еще выполняетеArray.push()
(не говоря уже об объявлении всей функции). Питонная реализация должна полагаться как можно больше на неявное понимание, а если оно не удастся, используя лямбда-выражение.В случае, если вы ищете что-то, чтобы перечислить ключи вложенного объекта n-глубины в виде плоского массива:
источник
Резюме
Для получения всех ключей объекта вы можете использовать
Object.keys()
.Object.keys()
принимает объект в качестве аргумента и возвращает массив всех ключей.Пример:
В приведенном выше примере мы храним массив ключей в ключах const. Затем мы можем легко получить доступ к количеству свойств объекта, проверив длину массива ключей.
Получение значений с помощью:
Object.values()
Дополнительной функцией
Object.keys()
являетсяObject.values()
. Эта функция принимает объект в качестве аргумента и возвращает массив значений. Например:источник
Если вы решили использовать Underscore.js, лучше
источник