반응형
동적 키를 사용하여 개체 만들기
우선, 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)에서는 계산된 키를 사용하여 개체를 생성할 수 있습니다.오브젝트 이니셜라이저 사양.
구문은 다음과 같습니다.
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);
}
주의: 브라우저 호환성을 유지하려면 여전히 트랜스필러가 필요합니다.
Babel 또는 Google의 tracer를 사용하면 현재 이 구문을 사용할 수 있습니다.
이전 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' 카테고리의 다른 글
v-module 질문, 개체 어레이 목록의 날짜를 기준으로 날짜를 사용하지 않도록 설정하는 방법 (0) | 2022.10.07 |
---|---|
Python Interpreter에서 업데이트된 패키지를 다시 가져오려면 어떻게 해야 합니까? (0) | 2022.10.07 |
소수점 이하 2자리까지 반올림 할 수 있나요? (0) | 2022.10.07 |
java: 해시맵이 작동하지 않음 (0) | 2022.10.07 |
IntelliJ에서 Java 디버거를 사용할 때 "Drop Frame"은 무엇을 의미합니까? (0) | 2022.09.25 |