[javascript] Javascript 객체의 첫 번째 속성에 액세스하는 방법은 무엇입니까?

객체의 첫 번째 속성에 액세스하는 우아한 방법이 있습니까?

  1. 당신이 당신의 재산의 이름을 모르는 곳
  2. for .. injQuery 와 같은 루프를 사용하지 않고$.each

예를 들어, foo1foo1의 이름을 모르고 객체 에 액세스해야합니다 .

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



답변

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

이를 사용하면 인덱스별로 다른 속성에도 액세스 할 수 있습니다. tho를 조심하십시오! Object.keysECMAScript에 따라 반환 순서가 보장되는 것은 아니지만 비공식적으로 모든 주요 브라우저 구현 에 의한 것입니다. 이에 대한 자세한 내용은 https://stackoverflow.com/a/23202095 를 참조하십시오.


답변

for … in루프를 시도하고 첫 번째 반복 후에 중단하십시오.

for (var prop in object) {
    // object[prop]
    break;
}


답변

당신은 또한 할 수 있습니다 Object.values(example)[0].


답변

Object.keys객체의 속성 배열을 가져 오는 데 사용 합니다. 예:

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

var keys = Object.keys(example); // => ["foo1", "foo2", "foo3"] (Note: the order here is not reliable)

여기에 제공된 설명서 및 크로스 브라우저 심 . 그것의 사용의 예는 여기 내 대답 중 다른 하나에서 찾을 수 있습니다 .

편집 : 명확성을 위해 다른 답변에 올바르게 언급 된 내용을 에코하고 싶습니다. 자바 객체의 키 순서는 정의되어 있지 않습니다.


답변

단일 규칙 버전 :

var val = example[function() { for (var k in example) return k }()];


답변

“첫번째”속성이 없습니다. 객체 키가 정렬되지 않았습니다.

위해와 그들에 당신이 루프 만약 (var foo in bar)당신이 그들을 얻을 것이다 어떤 순서지만 향후 변경 될 수 있습니다 (특히 추가하거나 다른 키를 제거하는 경우).


답변

lodash 라이브러리가있는 솔루션 :

_.find(example) // => {name: "foo1"}

그러나 자바 스크립트 VM 구현에 의존하기 때문에 객체 속성 내부 스토리지 순서를 보장 할 수 없습니다.