使用Javascript动态创建嵌套对象

时间:2013-02-06 14:13:19

标签: javascript

我是来自Python背景的Javascript的新手,可以使用自定义词典和.get方法轻松创建嵌套数据。我正在尝试做的是创建一个艺术家数据的嵌套对象,它采用这种形式:artistDict[artist][albumName] = albumYear。我需要通过迭代可迭代的相册对象来动态创建这个对象。这是我目前正在使用的代码:

albumDict = {};
albums.forEach(function(item){
albumDict[item.artist][item.name] = item.year;
});
document.write(albumDict);

这不起作用,这并不奇怪,因为像这样的东西也不适用于Python。但是,在Python中我可以使用.get方法检查条目是否在字典中并创建它(如果没有) - 是否有类似的东西,或者我可以用来实现我在JS中的目标的任何其他实用程序?

2 个答案:

答案 0 :(得分:4)

这应该有效:(如果属性不存在,你应该初始化它。)

albumDict = {};
albums.forEach(function(item){
    albumDict[item.artist] = albumDict[item.artist] || {};
    albumDict[item.artist][item.name] = item.year;
});

答案 1 :(得分:2)

试试这个:

albums.forEach(function(item){
    albumDict[item.artist] = albumDict[item.artist] || {};
    albumDict[item.artist][item.name] = item.year;
});

该函数的第一行(如果它不存在)将albumDict[item.artist]设置为新对象。否则,它会将其设置为自己。

然后,你可以在dict条目上设置年份。