2010-11-23 6 views
0

이것이 가능합니까?자바 스크립트 동적 배열 및 객체

그래서 동적 이름과 내용으로 배열을 확장하고 액세스 할 수 있어야합니다.

object = {}; 
var two = ['thing', 'thing2']; 
for(one in two){ 
    object[two[one]] = []; 
} 

그렇다면이 방법이 아니라면 어떻게됩니까?

+2

Eh? 네가 무엇을 요구하는지 모르겠다. 또한'for-in'으로'Array'를 반복하는 것은 나쁜 습관으로 간주됩니다; C 스타일의 for 루프를 사용하거나 가능한 경우 Array.prototype.forEach를 사용하십시오. – strager

+0

죄송합니다. 나를 설명하기가 정말로 어렵습니다 : \ – Adam

+0

거기에 표시 한 코드 샘플은 함수의 다른 곳에서'var one '을 제외하고는 전역 변수'one'을 선언합니다. 객체의 속성을 반복하는 가장 좋은 방법은'for (var prop in obj) {if (obj.hasOwnProperty (prop)) {...}}'입니다. – Phrogz

답변

1

이, 그냥 객체에 속성을 소유하고 있는지 확실히 행할 수 있도록하고,이를로부터 상속 아니에요 프로토 타입 체인에서 최대 높은 :

object = {}; 
var two = ['thing', 'thing2']; 

for..in :

for(var one in two){ 
    if(two.hasOwnProperty(one)) 
     object[two[one]] = []; 
} 

for :

for(var i = 0; i < two.length; i++) 
    object[two[i]] = []; 
+0

하나에 'var'이 누락되어 전역 적으로 정의되고 (잠재적으로 충돌 할 수 있음) 원인이됩니다. – Phrogz

+0

@Phrogz, Oops. 그 중 하나를 놓쳤습니다. 감사! –

1
var object = {}; 
var props = 'thing thing2'.split(' '); 
for (var i=0,len=props.length;i<len;++i){ 
    object[props[i]] = []; 
}