我有一本字典,如下所示。我正在尝试将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>],
},
};
答案 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];
}