동적 키로 객체 생성
이 질문에는 이미 답변이 있습니다.
먼저, DOM 액세스 및 Node.js 구문 분석을 위해 Cheerio 를 사용 하고 있습니다. 좋은 시간.
상황은 다음과 같습니다.
객체를 만들어야하는 기능이 있습니다. 해당 객체는 키와 값 모두에 변수를 사용한 다음 해당 단일 객체를 반환합니다. 예:
stuff = function (thing, callback) {
var inputs = $('div.quantity > input').map(function(){
var key = this.attr('name')
, value = this.attr('value');
return { key : value }
})
callback(null, inputs);
}
이것을 출력합니다 :
[ { key: '1' }, { key: '1' } ]
( .map()
객체의 배열을 반환합니다 fyi)
내가 필요 key
사실에서 문자열로 this.attr('name')
.
내가하려는 일을 고려하여 Javascript에서 문자열을 키로 할당하는 가장 좋은 방법은 무엇입니까?
JavaScript에 대한 새로운 ES2015 표준 (이전의 ES6)에서 계산 된 키를 사용 하여 객체를 만들 수 있습니다 . Object Initializer spec .
구문은 다음과 같습니다.
var obj = {
[myKey]: value,
}
OP의 시나리오에 적용되면 다음과 같이 변합니다.
stuff = function (thing, callback) {
var inputs = $('div.quantity > input').map(function(){
return {
[this.attr('name')]: this.attr('value'),
};
})
callback(null, inputs);
}
참고 : 브라우저 호환성을 위해 트랜스 파일러가 여전히 필요합니다 .
사용 바벨 이나 구글의 traceur를 , 할 수 있습니다 오늘이 구문을 사용합니다 .
이전 JavaScript 사양 (ES5 이하)에서 객체 리터럴의 키는 항상 문자 그대로 문자열로 해석됩니다.
"동적"키를 사용하려면 대괄호 표기법 을 사용해야합니다 .
var obj = {};
obj[myKey] = value;
귀하의 경우 :
stuff = function (thing, callback) {
var inputs = $('div.quantity > input').map(function(){
var key = this.attr('name')
, value = this.attr('value')
, ret = {};
ret[key] = value;
return ret;
})
callback(null, inputs);
}
동적 키를 사용하여 객체 리터럴을 정의 할 수 없습니다. 이 작업을 수행 :
var o = {};
o[key] = value;
return o;
바로 가기가 없습니다 (편집 : ES6에는 다른 답변이 있습니다).
참고 URL : https://stackoverflow.com/questions/19837916/creating-object-with-dynamic-keys
'Programing' 카테고리의 다른 글
Sublime Text 2에서 4 개의 공백을 탭으로 바꾸는 방법은 무엇입니까? (0) | 2020.03.13 |
---|---|
C #의 이벤트 및 이벤트 핸들러 이해 (0) | 2020.03.13 |
백그라운드에서 Android 애플리케이션이 실행 중인지 확인 (0) | 2020.03.13 |
PHP를 사용하여 HTTP 헤더를 UTF-8로 설정 (0) | 2020.03.13 |
Android에서 이미지 뷰의 투명한 배경 설정 (0) | 2020.03.13 |