2011-03-27 5 views
2

일련의 중첩 된 객체에 대한 키가있는 배열 (대상)이 있습니다. 나중에 값을 설정하기 전에 객체가 있는지 확인해야합니다. 이 코드는 작동하지만 반복 할 때까지만 사용할 수 있습니다.중첩 된 객체를 키 배열로 검사

n이 스위치를 무한대로 반복하지 않고 배열의 키 수는 어떻게 할 수 있습니까?

for t, index in target 
    switch i 
     when 1 
      if object[target[0]] is undefined 
       object[target[0]] = {} 
     when 2 
      if object[target[0]][target[1]] is undefined 
       object[target[0]][target[1]] = {} 
     when 3 
      if object[target[0]][target[1]][target[2]] is undefined 
       object[target[0]][target[1]][target[2]] = {} 
     when 4 
      if object[target[0]][target[1]][target[2]][target[3]] is undefined 
       object[target[0]][target[1]][target[2]][target[3]] = {} 
     when 5 
      if object[target[0]][target[1]][target[2]][target[3]][target[4]] is undefined 
       object[target[0]][target[1]][target[2]][target[3]][target[4]] = {} 
     when 6 
      if object[target[0]][target[1]][target[2]][target[3]][target[4]][target[5]] is undefined 
       object[target[0]][target[1]][target[2]][target[3]][target[4]][target[5]] = {} 
+0

재귀를 사용하여 트리 반복을 살펴보십시오. –

답변

1

주의 내 머리의 상단에서 테스트되지 않은 코드입니다. 두 번째에게,

target.reduce ((o,t)-> o[t]?={}), object 

첫 번째는보다 읽기 더 우아한 이럴 (그리고 current와 범위를 오염하지 않습니다)하지만이 ...

current = object 
for t in target 
    current = (current[t] ?= {}) 

또는 더 javascripty 버전을 작동합니다.

+0

모든 브라우저에서'Array :: reduce'를 사용할 수 없습니다. 다음은 대체품으로 사용할 수있는 구현입니다. http://www.diveintojavascript.com/core-javascript-reference/the-array-object/array-reduce –

관련 문제