[javascript] 객체의 첫 번째 인덱스 얻기

치다:

var object = {
  foo: {},
  bar: {},
  baz: {}
}

어떻게해야합니까 :

var first = object[0];
console.log(first);

첫 번째 색인의 이름이 아닌이므로 작동하지 foo않습니다 0.

console.log(object['foo']);

작동하지만 foo라는 이름을 모르겠습니다. 그것은 무엇이든 지명 될 수 있습니다. 나는 단지 첫 번째를 원한다.



답변

객체의 순서가 중요한 경우 객체를 배열에 저장하도록 JSON 스키마를 수정해야합니다.

[
    {"name":"foo", ...},
    {"name":"bar", ...},
    {"name":"baz", ...}
]

또는 아마도 :

[
    ["foo", {}],
    ["bar", {}],
    ["baz", {}]
]

Ben Alpert가 지적했듯이 Javascript 객체의 속성은 정렬되지 않으며 객체 리터럴에 지정된 순서대로 열거 할 것으로 예상되면 코드가 손상됩니다. “첫 번째”속성은 없습니다.


답변

재미를 위해 이것은 JS 1.8.5에서 작동합니다.

var obj = {a: 1, b: 2, c: 3};
Object.keys(obj)[0]; // "a"

이것은 당신이하는 것과 동일한 순서와 일치합니다

for (o in obj) { ... }


답변

간결한 것을 원하면 다음을 시도하십시오.

for (first in obj) break;

alert(first);

함수로 감싸서 :

function first(obj) {
    for (var a in obj) return a;
}


답변

그들은 실제로 주문 되지 는 않지만 할 수 있습니다 :

var first;
for (var i in obj) {
    if (obj.hasOwnProperty(i) && typeof(i) !== 'function') {
        first = obj[i];
        break;
    }
}

.hasOwnProperty()프로토 타입 객체를 무시 하는 것이 중요합니다.


답변

이것은 자바 스크립트 객체가 정렬되지 않았으므로 첫 번째 것을 제공하지는 않지만 경우에 따라 괜찮습니다.

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


답변

사용할 수있는 객체의 첫 번째 키

console.log(Object.keys(object)[0]);//print key's name

가치를 위해

console.log(object[Object.keys(object)[0]]);//print key's value


답변

JavaScript에서 “해시”(객체)에 정렬되지 않은 속성이있는 것처럼 보이는 첫 번째 요소를 얻는 방법은 없습니다. 가장 좋은 방법은 키를 배열에 저장하는 것입니다.

var keys = ["foo", "bar", "baz"];

그런 다음 적절한 값을 얻으려면 이것을 사용하십시오.

object[keys[0]]