лучший способ получить ключ объекта javascript с ключом/значением

Если у меня есть объект JS, например:

var foo = { 'bar' : 'baz' }

Если я знаю, что foo имеет такую базовую структуру ключ/значение, но не знаю имени ключа, какой самый простой способ получить его? for ... in? $.each()? Надеюсь, есть что-то получше....

Комментарии к вопросу (2)

Вы бы шли внутри объекта с помощью цикла for:

for(var i in foo){
  alert(i); // alerts key
  alert(foo[i]); //alerts key's value
}

Или

Object.keys(foo)
  .forEach(function eachKey(key) { 
    alert(key); // alerts key 
    alert(foo[key]); // alerts value
  });
Комментарии (6)

Вы можете открыть каждый ключ по отдельности без перебора, как в:

var obj = { first: 'someVal', second: 'otherVal' };
alert(Object.keys(obj)[0]); // returns first
alert(Object.keys(obj)[1]); // returns second
Комментарии (1)
Решение

Если вы хотите получить все ключи, объекта в ECMAScript 5 введен.ключи. Это поддерживается только новыми браузерами, а МДС документации предоставляет альтернативную реализацию (который также использует для...В кстати):

if(!Object.keys) Object.keys = function(o){
     if (o !== Object(o))
          throw new TypeError('Object.keys called on non-object');
     var ret=[],p;
     for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
     return ret;
}

Конечно, если вы хотите как ключ и значение, то для...в это единственное разумное решение.

Комментарии (5)

Учитывая ваш объект:

var foo = { 'bar' : 'baz' }

Чтобы получить в <код>В баре</код> используйте:

Object.keys(foo)[0]

Чтобы получить в <код>баз</код> используйте:

foo[Object.keys(foo)[0]]

Предполагая, что один объект

Комментарии (0)

А вкладыш для вас:

const OBJECT = {
    'key1': 'value1',
    'key2': 'value2',
    'key3': 'value3',
    'key4': 'value4'
};

const value = 'value2';

const key = Object.keys(OBJECT)[Object.values(OBJECT).indexOf(value)];

window.console.log(key); // = key2
Комментарии (1)

Это самый простой и легкий путь. Это, как мы делаем это.

в

var obj = { 'bar' : 'baz' }
var key = Object.keys(obj)[0];
var value = obj[key];

 console.log("key = ", key) // bar
 console.log("value = ", value) // baz

в

Комментарии (1)

У меня была такая же проблема, и это то, что работало

//example of an Object
var person = {
    firstName:"John",
    lastName:"Doe",
    age:50,
    eyeColor:"blue"
};

//How to access a single key or value
var key = Object.keys(person)[0];
var value = person.firstName;
Комментарии (1)
// iterate through key-value gracefully
const obj = { a: 5, b: 7, c: 9 };
for (const [key, value] of Object.entries(obj)) {
  console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
}

См МДН

Комментарии (0)

Я не вижу ничего, кроме for (var key in foo).

Комментарии (0)

Самый простой способ-это просто использовать Underscore.js:

ключи

_.ключи(объекта) извлечения всех имен объекта's свойства.

_.ключи({один : 1, два-2, Три : 3}); => ["один и", "от двух" В, С "три"]

Да, вам нужна дополнительная библиотека, но это's так легко!

Комментарии (2)

Объекта.ключи() Объект.ключи() метод возвращает массив данного объекта's собственное перечисляемые свойства, в том же порядке, как это предусмотрено для...в цикл (разница в том, что для-в петлю перечисляет свойства в цепочке прототипов, а).

var arr1 = Object.keys(obj);

Объекта.значения() Объект.values() метод возвращает массив данного объекта's собственное перечислимых значений свойств, в том же порядке, как это предусмотрено для...в цикл (разница в том, что для-в петлю перечисляет свойства в цепочке прототипов, а также).

var arr2 = Object.values(obj);

Для больше, пожалуйста, перейдите здесь

Комментарии (0)

Поскольку вы упомянули $.каждый(), здесь'ы удобный подход, который будет работать в jQuery 1.6+:

var foo = { key1: 'bar', key2: 'baz' };

// keys will be: ['key1', 'key2']
var keys = $.map(foo, function(item, key) {
  return key;
});
Комментарии (0)

Нет другого способа, кроме как for ... in. Если вы не хотите использовать этот способ (возможно, потому что это крайне неэффективно проверять hasOwnProperty на каждой итерации?), то используйте другую конструкцию, например, массив kvp'ов:

[{ key: 'key', value: 'value'}, ...]
Комментарии (0)

использовать для каждой петли для доступа к ключам в объект или карты в JavaScript

for(key in foo){
   console.log(key);//for key name in your case it will be bar
   console.log(foo[key]);// for key value in your case it will be baz
}

Примечание: Вы также можете использовать

объект.ключи(ФОО);

это даст вам такой выход:

[бар];

Комментарии (0)

Ну, $.each - это библиотечная конструкция, тогда как for ... in - это native js, что должно быть лучше.

Комментарии (0)

для показа как строку, просто использовать:

console.log("they are: " + JSON.stringify(foo));
Комментарии (0)