2015-09-01 37 views
0

我有一個用於存儲響度值的Hashmap。該代碼在Javascript HTML5中。什麼是最簡單的方式來存儲和加載數據的JavaScript?

var Loudness = {}; 
Loudness['f125'] = {right: [], left: []}; 
Loudness['f125']['right'].push([0,10,30, 40]); 
Loudness['f125']['left'].push([5,15,35,45]); 
Loudness['f250'] = {right: [], left:[] }; 
Loudness['f500'] = {right: [], left: []}; 
Loudness['f1000'] = {right: [], left: []}; 

我還具有用於存儲增益值(基本相同了,也瓦特/「右」和「左」的audiospeakers的(右和左側)性質的HashMap中。
的差異是HM的名字和數組的值我有很多的頻率(鍵,例如f250,f500,...)仍然可以插入到每個Hashmap。是否有更有效的方式來聲明每個頻率鍵及其屬性?
在Hashmap中使用Hashmap是否有意義?
此外,如果增益HM放入響度HM內,新的響度HM處置將如何?鍵(頻率)保持不變?日e GainHashmap現在是一個新的屬性? 我還沒有找到如何實現它。語法會是什麼樣子?
插入和輕鬆更改數據的最簡單方法是什麼(每個頻率的「右」和「左」的「響度」和「增益」)。
您認爲您有更好的選擇嗎? WebStorageAPI,Hashmap裏面的Hashmap?
請認爲我不是編程方面的專家。任何幫助是極大的讚賞。

回答

0
var Loudness = {}; 
    var freqs = ['f125', 'f250', 'f500', 'f1000', 'f1250']; 
    var values = [0, 10, 30, 40, 5, 15, 35, 45]; 
    for(var i in freqs){ 
     Loudness[freqs[i]] = {left : [], right : []}; 
     Loudness[freqs[i]].Gain = {left : [], right : []}; 
     for(var j in values){ 
      var v = values[j]; 
      if(v === 0 || v % 2 === 0){ 
       Loudness[freqs[i]]['right'].push(v); 
       Loudness[freqs[i]].Gain['right'].push(v); 
      } else { 
       Loudness[freqs[i]]['left'].push(v); 
       Loudness[freqs[i]].Gain['left'].push(v); 
     } 
    } 
} 

試試這個。爲了訪問你的收益:

Loudness['f125'].Gain.left[0] 

基本上,如果你需要更多的頻率,只需將它們添加到freqs陣列。

+0

感謝您的幫助有問題還與範圍。?! –

0

因此,作爲Loudness HM內部屬性的增益理念是完美的。
問題是,這個響度HM不允許被訪問(無論何處和聲明)。
1)我試圖讓它無法訪問,即使通過返回它的特權方法。
2)我什至在一個構造函數中聲明它(使用this.Loudness = {};而不是var Loudness = {} ;,但接收錯誤,如「Uncaught TypeError:無法讀取未定義的屬性250'訪問此值,使用它的公共方法件:

AudiometrySample.prototype.loudnessToGain = function (frequency, loudness, activeChannel) { 
... 
console.log("this.Loudness[250] is"+ this.Loudness); 
if (this.activeChannel === "right") { 
    for (var j = 0; j < this.Loudness[this.frequency].right.length; j++) { 
    if (this.Loudness[this.frequency].right[j] === this.loudness) { 
     this.wantedGain = this.Loudness[this.frequency].Gain.right[j]; 
     this.currentPairIndex = j; 
    } 
    } 
} 

這個控制檯日誌給「未定義」回如何使它訪問

相關問題