다음과 같은 배열이있는 경우 :
var arr = ['one','two','three'];
이렇게하면 다른 부분에 액세스 할 수 있습니다.
console.log(arr[1]);
키가 아닌 순서로 객체 속성에 액세스하려면 어떻게해야합니까?
예:
var obj = {
'something' : 'awesome',
'evenmore' : 'crazy'
},
jbo = {
'evenmore' : 'crazy',
'something' : 'awesome'
};
속성 이름을 명시 적으로 사용하지 않고 각 개체의 첫 번째 속성 ( “something”from obj
및 “evenmore”from-)을 어떻게 얻 jbo
습니까?
자, 여러분 중 일부는 내가 다음과 같은 것을 추구한다고 생각하는 것 같습니다.
console.log(obj['something']);
이것은 사실이 아닙니다. 가능한 경우 첫 번째 예와 마찬가지로 인덱스를 대상으로 특별히 찾고 있습니다.
답변
“가능한 경우 첫 번째 예와 마찬가지로 색인을 구체적으로 타겟팅하려고합니다.”
아니요, 불가능합니다.
가장 가까운 방법은 객체 키의 배열을 가져 와서 다음을 사용하는 것입니다.
var keys = Object.keys( obj );
…하지만 정의한 순서대로 키가 반환된다는 보장은 없습니다. 따라서 다음과 같이 보일 수 있습니다.
keys[ 0 ]; // 'evenmore'
keys[ 1 ]; // 'something'
답변
이 작업을 수행 할 수있는 유일한 방법은를 사용하여 속성을 제공하는 메서드를 만드는 것입니다 Object.keys();
.
var obj = {
dog: "woof",
cat: "meow",
key: function(n) {
return this[Object.keys(this)[n]];
}
};
obj.key(1); // "meow"
데모 : http://jsfiddle.net/UmkVn/
이것을 사용하는 모든 객체로 확장 할 수 Object.prototype;
있지만 일반적으로 권장되지는 않습니다.
대신 함수 도우미를 사용하세요.
var object = {
key: function(n) {
return this[ Object.keys(this)[n] ];
}
};
function key(obj, idx) {
return object.key.call(obj, idx);
}
key({ a: 6 }, 0); // 6
답변
Object.values()
을 사용하지 않으려면 방법을 사용할 수 있습니다 Object.keys()
.
Object.keys()
주어진 객체의 고유 한 열거 가능한 속성의 배열을 반환하는 메서드와는 반대로 , 예를 들면 다음과 같습니다.
const object1 = {
a: 'somestring',
b: 42,
c: false
};
console.log(Object.keys(object1));
다음 배열을 인쇄합니다.
[ 'a', 'b', 'c' ]
이 Object.values()
메서드는 지정된 객체의 고유 한 열거 가능한 속성 배열을 반환합니다 values
.
따라서 동일한 객체가 있지만 대신 값을 사용하는 경우
const object1 = {
a: 'somestring',
b: 42,
c: false
};
console.log(Object.values(object1));
다음 배열을 얻을 수 있습니다.
[ 'somestring', 42, false ]
따라서 액세스하려면 object1.b
싶지만 대신 색인을 사용하려면 다음을 사용할 수 있습니다.
Object.values(object1)[1] === 42
이 방법에 대한 자세한 내용은 여기에서 읽을 수 있습니다 .
답변
var obj = {
'key1':'value',
'2':'value',
'key 1':'value'
}
console.log(obj.key1)
console.log(obj['key1'])
console.log(obj['2'])
console.log(obj['key 1'])
// will not work
console.log(obj.2)
편집하다:
“가능한 경우 첫 번째 예와 마찬가지로 색인을 구체적으로 타겟팅하려고합니다.”
사실 ‘색인’이 핵심입니다. 키의 위치를 저장하려면이를 처리 할 사용자 지정 개체를 만들어야합니다.
답변
jquery로 다음과 같이 할 수 있습니다.
var arr = $.map(obj,function(value, key) {
return value;
});
alert(obj[0]);
답변
키 배열을 가져 와서 뒤집은 다음 루프를 실행합니다.
var keys = Object.keys( obj ).reverse();
for(var i = 0; i < keys.length; i++){
var key = keys[i];
var value = obj[key];
//do stuff backwards
}
답변
개체 필드로 채워진 배열을 만들고 배열의 인덱스를 사용하고이를 통해 개체 속성에 액세스 할 수 있습니다.
propertiesName:['pr1','pr2','pr3']
this.myObject[this.propertiesName[0]]