2013-02-06 131 views
0

我是來自Python背景的Javascript的新手,很容易使用自定義字典和.get方法創建嵌套數據。我想要做的是創建一個藝術家數據的嵌套對象,採用這種形式:artistDict[artist][albumName] = albumYear。我需要通過遍歷迭代的專輯對象來即時創建這個對象。下面是我目前使用的代碼:用Javascript創建嵌套對象

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

這是不行的,這並不奇怪,因爲這樣的事情不會在Python工作,要麼。然而,在Python中,我可以使用.get方法來檢查一個條目是否在字典中,如果不是 - 是否有類似的東西,或者我可以用來實現我在JS中的目標的任何其他實用程序?

+1

你要測試屬性是否存在,如果它不,它初始化。 –

回答

2

試試這個:

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

在該函數的第一行設置albumDict[item.artist]到新的對象,如果它不存在,但。否則,它會將其設置爲自己。

然後,您可以只設置在字典條目的一年。

4

這應該工作:(如果屬性不存在,你應該初始化它..)

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