2012-08-14 2 views
0

나는 자바 스크립트JavaScript로 struct에 새 항목을 추가하는 방법은 무엇입니까?

의 구조체가
settings = { 
     "type-1": { 
      "setting-1": true, 
      "setting-2": 2 
     } 
     "type-2": { 
      "setting-3": "value", 
     } 
    }; 

내가 항목을 수정할 수 있습니다

settings["type-1"]["setting-1"] = false; 

하지만이 구조체에 새 항목을 추가하는 방법?

시도

settings["type-new"]["setting-100"] = "new one"; 

그러나 설정 [ "형 새가"] 정의되지 않습니다. 어떻게 새로운 것을 추가 할 수 있을까요?

+0

"struct"라는 용어는 JavaScript에는 적용되지 않습니다. "개체 리터럴"("개체 이니셜 라이저"라고도 함)를 사용하여 "개체"를 정의한 다음 개체의 속성을 수정합니다. (중첩 된 객체 리터럴을 사용하는 예제에서는 실제로 세 개의 객체를 만듭니다.) – nnnnnn

답변

2

먼저 개체에 [ "type-new"] 설정을 지정해야합니다.

settings["type-new"] = {}; 
settings["type-new"]["setting-100"] = "new one"; 
당신이 한 줄에 그것을 할 수
+0

고맙습니다, 도버트! Sagivo도 좋은 제안을했지만, 처음부터 대답을 수락합니다. – podeig

2

: 당신이 가지고 : 당신이 객체 리터럴을 사용하고 있기 때문에,

settings["type-new"] = {"setting-100": "new one"} 
+0

고마워, 사기 보! 좋은 soultion! 그것은 작동합니다! – podeig

+0

항상 도와 드리겠습니다 :) –

1

Dogbert 잘 그것을 가지고 (P 즉 그들이 아니라 구조체라고하고 기능) 그 (것)들에 가치를 할당하기 전에, 그 (것)들을 창조하십시오. settings["type-new"]["setting-100"] = "new one";을 쓰는 것은 undefined["setting-100"] = "new one";과 같습니다. 그것이 작동하지 않는 이유입니다.

더 직관적
settings.typeNew.setting100 = "new one"; 

합니다 ([""] 표기 : 측면에

, 당신이 당신의 키에 대시를 사용하지 떨어져 정말 더 좋을 것 같아, 나는 쉽게의 라인을 따라 당신과 같은 코드를 작성하는 발견 속성 이름이 변수의 값이고, 당신이 정확하게 eval을 사용하고 싶지 않은 경우에는 매우 유용합니다.

+1

나는이 방법도 선호하지만 항목의 이름은 동적이므로 내 경우에는 사용할 수 없습니다. 설명해 주셔서 감사합니다! :) – podeig

+0

이 경우 물론'[ '']'을 사용하는 것이 옳습니다. 해피 코딩 –

관련 문제