JS - 将多个dict值添加到dict键中

时间:2017-11-01 21:09:04

标签: javascript json dictionary

我有一本字典,如下所示。我正在尝试将dict值添加到它们中。 这就是它的明星

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

例如:如果我想将d = {dove : [<some list>] }添加到animal[flying],我该怎么做?我无法手动输入值,因此我正在运行循环,我能够手动编写它,但不能用程序编写。

我已经尝试animals[flying] = d,这可能是第一次使用,但是当我尝试添加另一个值时,它将被替换而不会被追加。

最后我正在寻找类似的东西:这就是它的结尾

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

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

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

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

        },
    };

3 个答案:

答案 0 :(得分:1)

我认为你想要做的是:

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

E.g。

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]}}

答案 1 :(得分:1)

因为

myDict[subcat] = x 

指定它。你正在使用列表。想一想 - 你有没有以这种方式将一个项目添加到列表中?当然会覆盖您之前的条目。你想要的是将推送变量放入数组中(同样,这不是python。列表被称为数组和字典被称为对象。有一个区别,但这超出了范围回答这里。谷歌吧)。

这样做:

myDict = {
    subCat: [],
}

然后当你循环:

myDict[subCat].push(x)

答案 2 :(得分: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];
}