Как получить доступ к первому свойству объекта в Javascript? - PullRequest
516 голосов
/ 11 июня 2009

Есть ли элегантный способ доступа к первому свойству объекта ...

  1. где вы не знаете название вашей недвижимости
  2. без использования цикла типа for .. in или jQuery's $.each

Например, мне нужно получить доступ к foo1 объекту, не зная имени foo1:

var example = {
    foo1: { /* stuff1 */},
    foo2: { /* stuff2 */},
    foo3: { /* stuff3 */}
};

Ответы [ 16 ]

1 голос
/ 09 мая 2019
var obj = { first: 'someVal' };
let firstPropValue = Object.values(obj)[0];

Это всегда будет возвращать значение 1-го свойства, в данном случае 'someVal'

0 голосов
/ 18 июня 2019

Верхний ответ может генерировать весь массив и затем захватывать из списка. Вот еще один эффективный ярлык

var obj = { first: 'someVal' };
Object.entries(obj)[0][1] // someVal
0 голосов
/ 12 июня 2019

Чтобы получить первое имя ключа в объекте, вы можете использовать:

var obj = { first: 'someVal' };
Object.keys(obj)[0]; //returns 'first'

Возвращает строку, поэтому вы не можете получить доступ к вложенным объектам, если они были, например:

var obj = { first: { someVal : { id : 1} }; Здесь с этим решением вы не можете получить доступ к идентификатору.

Лучшее решение, если вы хотите получить реальный объект, это использовать lodash, например:

obj[_.first(_.keys(obj))].id

Чтобы вернуть значение первого ключа, (если вы не знаете точно имя первого ключа):

var obj = { first: 'someVal' };
obj[Object.keys(obj)[0]]; //returns 'someVal'

если вы знаете имя ключа, просто используйте:

obj.first

или

obj['first']
0 голосов
/ 08 января 2018

Любая причина не делать этого?

> example.map(x => x.name);

(3) ["foo1", "foo2", "foo3"]
0 голосов
/ 12 июня 2009

Использовать массив вместо объекта (квадратные скобки).

var example = [ {/* stuff1 */}, { /* stuff2 */}, { /* stuff3 */}];
var fist = example[0];

Обратите внимание, что вы теряете идентификаторы 'foo'. Но вы можете добавить свойство name к содержащимся объектам:

var example = [ 
  {name: 'foo1', /* stuff1 */},
  {name: 'foo2', /* stuff2 */},
  {name: 'foo3', /* stuff3 */}
];
var whatWasFirst = example[0].name;
0 голосов
/ 12 июня 2009

Если вам нужен доступ к «первому свойству объекта», это может означать, что с вашей логикой что-то не так Порядок свойств объекта не должен иметь значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...