2015-04-03 3 views
0

У меня есть объект, который будет иметь только одно свойство (собственное имущество). Каков самый простой способ получить доступ к этой ценности?Самый простой способ получить доступ к одному собственному объекту объекта?

Что-то вроде:

value = obj[<firstProperty>]; 

Я знаю, что могу написать функцию или для цикла, чтобы сделать это, но я прошу, если есть более короткий путь.

for (p in obj) { 
    if (obj.hasOwnProperty(p)) { 
     value = obj[p]; 
    } 
} 

Я не буду знать название собственности спереди. Я знаю только, что на объект будет только одно свойство.

+1

Закрепить конструкцию данных. Объекты с одним неизвестным именем свойства обычно являются признаком плохого выбора дизайна где-то вдоль линии. Единственный фрагмент данных с неизвестным именем свойства не принадлежит объекту. Если вы хотите просто сохранить один неизвестный ключ и значение, просто поместите их в массив '[" unknownKey ", value]', и вы можете напрямую обращаться к ним. – jfriend00

+0

Держу пари. Покажите нам общий контекст, и я буду очень удивлен, если то, что вы описали, - лучший способ его разработки. – jfriend00

+0

И что делает этот случай исключительным? – undefined

ответ

4

что-то вроде

var value = obj[ Object.keys(obj)[0] ]; 

получение ключей с Object.keys и первый ключ (и только) с [0]

+2

Почему бы не '[0]'? – SLaks

+0

@SLaks - Конечно, почему бы и нет, мне просто нравится 'shift()', это имеет значение? – adeneo

+1

Поскольку мутация массива медленнее – SLaks

2

Это должно работать.

var keys = Object.keys(obj); 
var value = obj[keys[0]]; 

Мы можем сделать его короче

var value = obj[Object.keys(obj)[0]]; 
+2

@ChrisGciso - нет, второй! – adeneo

+0

@adeneo, ха-ха-ха :) на самом деле я не видел вашего ответа во время публикации этого. Но похоже, что вы первый :) – Sohel

+0

и все в порядке, вы идете, для меня не имеет большого значения то, что принято, это просто показалось странным комментарием от OP – adeneo

Смежные вопросы