programing

동적 키를 사용하여 개체 만들기

goodcopy 2022. 10. 7. 21:37
반응형

동적 키를 사용하여 개체 만들기

우선, 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

반응형