Получение списка ключей объекта JavaScript
335261 просмотра
16 ответа
У меня есть объект JavaScript, как
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
Как я могу получить длину и список ключей в этом объекте?
Автор: user160820 Источник Размещён: 13.11.2019 11:30Ответы (16)
336 плюса
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
};
var keys = [];
for (var k in obj) keys.push(k);
alert("total " + keys.length + " keys: " + keys);
616 плюса
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
var keys = Object.keys(obj);
console.log('obj contains ' + keys.length + ' keys: '+ keys);
Это поддерживается в большинстве основных браузеров сейчас.
Автор: Anurag Размещён: 18.06.2010 10:0725 плюса
Underscore.js делает преобразование довольно чистым:
var keys = _.map(x, function(v, k) { return k; });
Редактировать: я пропустил, что вы можете сделать это тоже:
var keys = _.keys(x);
Автор: mikebridge
Размещён: 25.01.2013 05:21
18 плюса
Если вам нужны только ключи, относящиеся к этому конкретному объекту, а не какие-либо производные prototype
свойства:
function getKeys(obj) {
var r = []
for (var k in obj) {
if (!obj.hasOwnProperty(k))
continue
r.push(k)
}
return r
}
например:
var keys = getKeys({'eggs': null, 'spam': true})
var length = keys.length // access the `length` property as usual for arrays
Автор: cryo
Размещён: 18.06.2010 10:13
4 плюса
var keys = new Array();
for(var key in obj)
{
keys[keys.length] = key;
}
var keyLength = keys.length;
чтобы получить доступ к любому значению объекта, вы можете использовать obj [key];
Автор: Mohan Gundlapalli Размещён: 18.06.2010 09:364 плюса
obj = {'a':'c','b':'d'}
Ты можешь попробовать:
[index for (index in obj)]
это вернется:
['a','b']
чтобы получить список ключей или
[obj[index] for (index in obj)]
чтобы получить значения
Автор: Jim Nolan Размещён: 24.01.2012 09:324 плюса
Ответ Анурагса в основном правильный. Но для поддержки Object.keys(obj)
старых браузеров вы также можете использовать приведенный ниже код, который скопирован с
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
. Он добавляет Object.keys(obj)
метод, если он не доступен из браузера.
if (!Object.keys) {
Object.keys = (function() {
'use strict';
var hasOwnProperty = Object.prototype.hasOwnProperty,
hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'),
dontEnums = [
'toString',
'toLocaleString',
'valueOf',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'constructor'
],
dontEnumsLength = dontEnums.length;
return function(obj) {
if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
throw new TypeError('Object.keys called on non-object');
}
var result = [], prop, i;
for (prop in obj) {
if (hasOwnProperty.call(obj, prop)) {
result.push(prop);
}
}
if (hasDontEnumBug) {
for (i = 0; i < dontEnumsLength; i++) {
if (hasOwnProperty.call(obj, dontEnums[i])) {
result.push(dontEnums[i]);
}
}
}
return result;
};
}());
}
Автор: Sandro
Размещён: 29.11.2014 10:49
3 плюса
Обратите внимание, что в coffeescript это может быть выполнено во всех браузерах и узлах как
k for k of obj
и поэтому
(1 for _ of obj).length
Автор: Tim James
Размещён: 17.01.2014 11:48
3 плюса
Используйте Object.keys()
... это путь.
Полная документация доступна на сайте MDN по ссылке ниже:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
Автор: jshaw3 Размещён: 15.08.2018 06:282 плюса
Для обозначенной запятыми строки, в которой перечислены ключи объекта JSON, попробуйте следующее:
function listKeys(jObj){
var keyString = '';
for(var k in jObj){
keyString+=(','+k);
}
return keyString.slice(1);
}
/* listKeys({'a' : 'foo', 'b' : 'foo', 'c' : 'foo'}) -> 'a,b,c' */
Автор: Christian
Размещён: 17.11.2014 08:34
2 плюса
Рекурсивное решение для браузеров, поддерживающих ECMAScript 5:
var getObjectKeys = function(obj) {
var keys = Object.keys(obj);
var length = keys.length;
if (length !== 0) {
for (var i = 0; i < length; i++) {
if (typeof obj[keys[i]] === 'object') {
keys[keys[i]] = getObjectKeys(obj[keys[i]]);
}
}
}
return keys;
};
Автор: Jordi
Размещён: 08.06.2017 07:11
2 плюса
Используя ES6, вы можете использовать forEach
для перебора ключей объекта. Чтобы получить все ключи, которые вы можете использовать, Object.keys
который возвращает все ключи в объекте
Object.keys(obj).forEach(function(keyValue, index, map) {
console.log(keyValue);
});
Будет короткая рука из приведенного выше фрагмента, которая принимает только один параметр
Object.keys(obj).forEach(function(keyValue) {
console.log(keyValue);
});
Автор: Rinav
Размещён: 08.02.2018 10:18
2 плюса
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
console.log(Object.keys(obj));
console.log(Object.keys(obj).length)
Автор: bajran
Размещён: 15.07.2018 05:05
2 плюса
Если вы решили использовать Underscore.js, лучше
var obj = {
key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4'
}
var keys = [];
_.each( obj, function( val, key ) {
keys.push(key);
});
console.log(keys.lenth, keys);
Автор: mohammad javad ahmadi
Размещён: 09.01.2019 06:15
2 плюса
В JavaScript объект - это отдельная сущность со свойствами и типом.
Для извлечения значений из Object в виде массива: Object .values (obj) // obj - это имя объекта, которое вы использовали Result -> ["value1", "value2", "value3", "value4"]
Для извлечения ключей из Object в виде массива: Object .keys (obj) // obj - это имя объекта, которое вы использовали Result -> ["key1", "key2", "key3", "key4"]
Поскольку обе функции возвращают массив, вы можете получить длину ключей или значение, используя свойство length. Например - Object .values (obj) .length или Object .keys (obj) .length
Автор: Rakesh Soni Размещён: 31.08.2019 07:240 плюса
используя ломтик, применить и объединить метод.
var print = Array.prototype.slice.apply( obj );
alert('length='+print.length+' list'+print.join());
Автор: user3905993
Размещён: 08.08.2014 12:32
Вопросы из категории :
- javascript Как определить, какой из указанных шрифтов был использован на веб-странице?
- javascript Валидация клиентской стороны ASP.Net
- javascript Длина объекта JavaScript
- javascript Получение текста из выпадающего списка
- javascript Скрипт входа со скрытыми кнопками
- javascript Как автоматически изменить размер текстовой области с помощью Prototype?
- javascript Удаление элементов с помощью Array.map в JavaScript
- javascript Прокрутка переполненных DIV с помощью JavaScript
- javascript API Карт Google - проблемы с классом GLatLngBounds
- javascript Проверка десятичных чисел в JavaScript - IsNumeric ()
- javascript Как я могу украсить код JavaScript с помощью командной строки?
- javascript Динамически загружать файл JavaScript
- javascript Экранирование строк HTML с помощью jQuery
- javascript Обнаружение неопределенного свойства объекта
- javascript Как сравнить HTML-сущность с JQuery
- javascript Есть ли HTML напротив <noscript>?
- javascript Есть ли функция "существует" для jQuery?
- javascript Как заставить клиентов обновлять файлы JavaScript?
- javascript Замена n-го экземпляра совпадения с регулярным выражением в Javascript
- javascript Сделать окно браузера мигающим в панели задач