개체의 첫 번째 인덱스 가져오기
고려사항:
var object = {
foo: {},
bar: {},
baz: {}
}
어떻게 하면 좋을까요?
var first = object[0];
console.log(first);
첫 번째 인덱스의 이름이 지정되었기 때문에 효과가 없는 것은 분명합니다.foo
,것은 아니다.0
.
console.log(object['foo']);
먹히긴 하는데 이름이 foo인지는 모르겠어요.아무 이름이나 붙일 수 있어요난 그저 첫 번째를 원해.
재미삼아 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()
프로토타입 물체를 무시하는 것이 중요합니다.
javascript 객체가 주문되지 않았기 때문에 첫 번째 객체는 표시되지 않지만 경우에 따라서는 괜찮습니다.
myObject[Object.keys(myObject)[0]]
개체의 순서가 중요한 경우 JSON 스키마를 수정하여 개체를 배열에 저장해야 합니다.
[
{"name":"foo", ...},
{"name":"bar", ...},
{"name":"baz", ...}
]
또는 다음과 같은 경우가 있습니다.
[
["foo", {}],
["bar", {}],
["baz", {}]
]
Ben Alpert가 지적한 바와 같이 Javascript 객체의 속성은 순서가 매겨져 있지 않으며, 오브젝트 리터럴에 지정된 순서와 같은 순서로 열거될 것으로 예상할 경우 코드가 깨집니다.즉, "first" 속성은 존재하지 않습니다.
사용할 수 있는 개체의 첫 번째 키
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]]
ES6
const [first] = Object.keys(obj)
밑줄을 사용하면 다음과 같이 _.pairs를 사용하여 키 값 쌍으로 첫 번째 개체 엔트리를 가져올 수 있습니다.
_.pairs(obj)[0]
그러면 키를 추가로 사용할 수 있습니다.[0]
첨자, 값[1]
어제도 같은 문제가 있었어요.이렇게 해결했습니다.
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'} )
개체의 첫 번째 키를 가져오려면
const myObject = {
'foo1': { name: 'myNam1' },
'foo2': { name: 'myNam2' }
}
const result = Object.keys(myObject)[0];
// result will return 'foo1'
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));
언급URL : https://stackoverflow.com/questions/909003/getting-the-first-index-of-an-object
'programing' 카테고리의 다른 글
현재 날짜의 타임스탬프가 있는 행을 선택하려면 어떻게 해야 합니까? (0) | 2023.01.13 |
---|---|
경고/오류 "함수 선언은 프로토타입이 아닙니다" (0) | 2023.01.13 |
Internet Explorer에 대해 'console'이 정의되지 않은 오류입니다. (0) | 2023.01.13 |
MySQL: int 필드의 값을 전환하는 간단한 방법 (0) | 2023.01.13 |
개체 배열을 여러 필드로 정렬하려면 어떻게 해야 합니까? (0) | 2023.01.13 |