Programing

동적 키로 객체 생성

lottogame 2020. 3. 13. 08:13
반응형

동적 키로 객체 생성


이 질문에는 이미 답변이 있습니다.

먼저, 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


반응형