programing

개체의 첫 번째 인덱스 가져오기

goodsources 2023. 1. 13. 19:55
반응형

개체의 첫 번째 인덱스 가져오기

고려사항:

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

반응형