2017-11-01 1 views
0

다음과 같이 사전이 있습니다. 나는 그 안에 dict 값을 추가하려고합니다. 이것은 예를 들어JS - dict 키에 여러 개의 dict 값 추가

var animals = { 
     flying : {}, 
     underground : {}, 
     aquatic : {}, 
     desert : {} 
    }; 

와 별 것입니다 : 나는 내가 그것을 어떻게 할 것, animal[flying]d = {dove : [<some list>] }를 추가하고 싶다면? 나는 수동으로 값을 입력 할 수 없기 때문에 루프를 돌리고 있는데, 수동으로 쓸 수는 있지만 프로그램에서는 할 수 없다.

나는 처음 시도하지만, 다른 값을 추가하려고하면 대체되고 추가되지 않습니다. 나는 이런 식으로 뭔가를 찾고 있어요 결국

: 이것은

var animals = { 
     flying : { 
      dove : [<list>], 
      sparrow : [<list>], 

     }, 
     underground : { 
      rabbits : [<list>], 
      squirrel : [Squirrel], 

     }, 
     aquatic : { 
      dolphin : [<list>], 
      whale : [Squirrel], 

     }, 
     desert : { 
      camel : [<list>], 
      antelope : [<list>], 

     }, 
    }; 

답변

0
var newAnimal = {name: 'bird'};  
if(animals['flying']['dove'] && animals['flying']['dove'].length > 0) { 
    //List already exists so add the new animal 
    //TODO also check if the animal is already in the list? 
    animals['flying']['dove'].push(newAnimal); 
}else { 
    //Create the new list 
    animals['flying']['dove'] = [newAnimal]; 
} 
1

로 끝나는 것입니다 나는 당신이하고 싶은 것은 생각 :

animals["flying"] = Object.assign(animals["flying"], d); 

일예

animals = { 
    flying: {} 
} 

d = { dove: [1, 2, 3] } 
Object.assign(animals["flying"], d); 
d = { sparrow: [1, 2, 3] } 
Object.assign(animals["flying"], d); 
console.log(animals); //{"flying":{"dove":[1,2,3],"sparrow":[1,2,3]}} 
+0

([ "비행"] 동물, D)'. 'Object.assign'는 이미 첫 번째 인수를 변경합니다. 또한''flying '''동물은''animals.flying''로 재 작성 될 수 있습니다. – Xufox

1

myDict[subcat] = x 

그것을 할당하기 때문이다. 당신은 명단을 가지고 일하고 있습니다. 생각해보십시오 - 언제 이런 식으로 목록에 항목을 추가 한 적이 있습니까? 물론 이전 항목을 덮어 씁니다. 당신이 원하는 것은 입니다. 변수를 배열에 넣으십시오. (또한 파이썬이 아닙니다. 목록은 배열이라고하며, 사전은 객체라고합니다.) 구별이 있습니다 만, 그 대답의 범위를 벗어납니다.).

그래서 이렇게 :

myDict = { 
    subCat: [], 
} 

을 그리고 그 때 루프 :`Object.assign 동등의

myDict[subCat].push(x)