객체의 첫 번째 속성에 액세스하는 우아한 방법이 있습니까?
- 당신이 당신의 재산의 이름을 모르는 곳
for .. in
jQuery 와 같은 루프를 사용하지 않고$.each
예를 들어, foo1
foo1의 이름을 모르고 객체 에 액세스해야합니다 .
var example = {
foo1: { /* stuff1 */},
foo2: { /* stuff2 */},
foo3: { /* stuff3 */}
};
답변
var obj = { first: 'someVal' };
obj[Object.keys(obj)[0]]; //returns 'someVal'
이를 사용하면 인덱스별로 다른 속성에도 액세스 할 수 있습니다. tho를 조심하십시오! Object.keys
ECMAScript에 따라 반환 순서가 보장되는 것은 아니지만 비공식적으로 모든 주요 브라우저 구현 에 의한 것입니다. 이에 대한 자세한 내용은 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 구현에 의존하기 때문에 객체 속성 내부 스토리지 순서를 보장 할 수 없습니다.