【问题标题】:What's the easiest way to store and load data Javascript?存储和加载数据 Javascript 的最简单方法是什么?
【发布时间】:2015-11-26 16:00:04
【问题描述】:

我有一个用于存储响度值的 Hashmap。代码采用 Javascript HTML5 格式。

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: []};

我还有一个 Hashmap 用于存储增益值(基本上与 up 相同,也带有“right”和“left”(音频扬声器的右侧和左侧)属性。
不同之处在于 HM 的名称和数组的值。我还有很多频率(键,例如 f250、f500、...)仍然要插入到每个 Hashmap。有没有更有效的方法来声明每个频率键及其属性?
在 Hashmap 中使用 Hashmap 有意义吗?
另外,如果将增益 HM 放在响度 HM 中,新的响度 HM 配置会如何?键(频率)是否保持不变? GainHashmap 现在是一个新属性吗? 我还没有找到如何实现它。语法是什么样的?
插入和轻松更改数据的最简单方法是什么(每个频率的“右”和“左”的“响度”和“增益”)。
您认为有更好的选择吗? WebStorageAPI,Hashmap里面的Hashmap?
请考虑到我不是编程方面的专家。非常感谢任何帮助。

【问题讨论】:

    标签: javascript html hashmap


    【解决方案1】:
    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 数组即可。

    【讨论】:

    • 感谢您的帮助!范围仍然存在问题
    【解决方案2】:

    因此,将增益作为 Loudness HM 中的属性的想法是完美的。
    问题是不允许访问此响度 HM(无论它在哪里声明)。
    1) 即使通过特权方法返回它,我也试图使其可访问。
    2) 我什至在构造函数中声明了它(使用 this.Loudness = {}; 而不是 var Loudness = {};,但在尝试访问时收到类似“Uncaught TypeError: Cannot read property '250' of undefined”之类的错误这个值。使用它的公共方法的一部分:

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

    此控制台日志返回“未定义”。如何使其可访问?

    【讨论】:

      猜你喜欢
      • 2015-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      相关资源
      最近更新 更多