2012-03-09 3 views
3

한 번에 한 줄씩 각 동적 키를 지정해야 할 필요가 있음을 알았습니다.javascript 객체에 여러 개의 동적 키 이름을 추가하는 단축 방법

내가 기존 개체에 추가 키를 추가 할 지금하고 있어요 것은 : 쉬운 방법이

jQuery.extend({('title_' + id) : field_data[0], ('field_' + id) : field_data[1]}); 

가있다 :

create_request[('title_' + id)] = field_data[0]; 
create_request[('field_' + id)] = field_data[1]; 

내가 할 수 있기를 바라고하는 것은 같은 것이있다 내가 지금하고있는 것보다 (나는 기대했던 것이 작동하지 않기 때문에)? 또는 이것은 단지 언어의 한계입니까?

좋아, 당신은 다음과 같이 자바 스크립트에서 개체를 만들 수 있습니다 :

명확성을 위해 편집

{ 
a : 1 
} 

하지만이 키의 문자열 값이라고 가정합니다. 키를 변수의 값으로 사용하려면 어떻게해야합니까?

내가 할 수있는 :

the_object[variable] = 1 

하지만 내가 개체에 이러한 동적 삽입 중 하나 이상을 원한다면? 그렇게 할 수있는 편리한 방법이 있습니까?

+0

http://stackoverflow.com/questions/ 171251/how-can-i-merge-properties-of-javascript-objects-dynamically 동적 인 것은 아니지만 여러분이 원하는 라인을 따라 있습니다. 당신은'create_request' 객체와 그 안에있는 모든 필드를 가진 새로운 객체를 사용할 수 있고 그들을 함께 병합 할 수 있습니다. – Brad

+0

@ 브래드, 어쩌면 나는 명확하지 않았지만 그 질문은 전혀 비슷하지 않습니다. 두 객체를 병합 할 수 있다는 것을 알고 있습니다 (예제에서 jquery의 확장도 사용했습니다). – GoldenNewby

+0

@Brad, 귀하의 편집에 대한 응답으로 : 나는 그것이 어떻게 축약 솔루션이 될지 모르겠다. – GoldenNewby

답변

3

JavaScript에 관해 한 가지만 바꿀 수 있다면 객체 리터럴 구문입니다. 나는 속성 이름이 속성 값과 같은 표현식으로 평가되어야한다고 생각한다; 나는 이것이 정적 이름을 사용할 때 따옴표 붙은 속성 이름을 포함해야한다는 불쾌감을 버리게 될 것이라고 생각합니다. 그러나 소원이 물고기 인 경우 ...

대괄호 표기법을 사용하면 동적 이름으로 속성을 설정할 수있는 기본 제공 방법이 있지만 입력을 동적으로 가져 오는 고유 한 함수를 만드는 것은 어렵지 않습니다. 새로운 속성 이름을 유지하기 위해 배열이 아닌 일반 객체를 사용하여

extendObject(obj, props) { 
    for (var i = 0; i < props.length; i+=2) 
     obj[props[i]] = props[i+1]; 
} 

extendObject(create_request, ['title_' + id, field_data[0], 'field_' + id, field_data[1]]); 

및 동적 이름을 사용할 수 있습니다 값 : 사용하기를 희망 구문.

(참고 또한 심지어 귀하의 질문에 대괄호 구문을 함께했습니다 그것은 약간은 중복 괄호를 포함하여 필요 이상 복잡.)

+1

오늘 밤 나와 함께 2 시가됩니다. 나는 네가 내가하는 말을 이해하는 유일한 사람일지도 모른다고 생각한다 : P – GoldenNewby

관련 문제