답변:
객체의 순서가 중요한 경우 객체를 배열에 저장하도록 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;
}
for (var key in obj) if (obj.hasOwnProperty(key)) break;
사용하려면 key
변수 를 사용하는 것이 좋습니다
Object.keys(obj)[0];
(1.644ms)보다 훨씬 빠릅니다 ( for
0.072ms).
그들은 실제로 주문 되지 는 않지만 할 수 있습니다 :
var first;
for (var i in obj) {
if (obj.hasOwnProperty(i) && typeof(i) !== 'function') {
first = obj[i];
break;
}
}
.hasOwnProperty()
프로토 타입 객체를 무시 하는 것이 중요합니다.
사용할 수있는 객체의 첫 번째 키
console.log(Object.keys(object)[0]);//print key's name
가치를 위해
console.log(object[Object.keys(object)[0]]);//print key's value
ES6
const [first] = Object.keys(obj)
나는 어제 같은 문제가 있었다. 나는 이것을 다음과 같이 해결했다.
var obj = {
foo:{},
bar:{},
baz:{}
},
first = null,
key = null;
for (var key in obj) {
first = obj[key];
if(typeof(first) !== 'function') {
break;
}
}
// first is the first enumerated property, and key it's corresponding key.
가장 우아한 솔루션은 아니며 브라우저마다 다른 결과를 낼 수 있다고 확신합니다 (즉, 스펙은 열거 된 것과 동일한 순서로 속성을 열거 할 필요가 없다고 말합니다). 그러나 객체에 단일 속성 만 있었기 때문에 문제가되지 않았습니다. 방금 첫 번째 열쇠가 필요했습니다.
다음과 같이 할 수 있습니다.
var object = {
foo:{a:'first'},
bar:{},
baz:{}
}
function getAttributeByIndex(obj, index){
var i = 0;
for (var attr in obj){
if (index === i){
return obj[attr];
}
i++;
}
return null;
}
var first = getAttributeByIndex(object, 0); // returns the value of the
// first (0 index) attribute
// of the object ( {a:'first'} )
CMS 답변을 기반으로 합니다. 직접 값을 얻지 못하고 대신 인덱스에서 키를 가져 와서 값을 얻습니다.
Object.keyAt = function(obj, index) {
var i = 0;
for (var key in obj) {
if ((index || 0) === i++) return key;
}
};
var obj = {
foo: '1st',
bar: '2nd',
baz: '3rd'
};
var key = Object.keyAt(obj, 1);
var val = obj[key];
console.log(key); // => 'bar'
console.log(val); // => '2nd'
내 해결책 :
Object.prototype.__index = function(index)
{
var i = -1;
for (var key in this)
{
if (this.hasOwnProperty(key) && typeof(this[key])!=='function')
++i;
if (i >= index)
return this[key];
}
return null;
}
aObj = {'jack':3, 'peter':4, '5':'col', 'kk':function(){alert('hell');}, 'till':'ding'};
alert(aObj.__index(4));