【问题标题】:Populating 2D Array in JS在 JS 中填充二维数组
【发布时间】:2013-09-29 11:03:10
【问题描述】:

我正在尝试使用 Firebug API 填充二维数组,

var sites = [];
    var siteCounter = 0;

    //Firebase API Calls

    var messageListRef = new Firebase('https://my.firebaseio.com');
    messageListRef.once('value', function(allMessagesSnapshot) {
      allMessagesSnapshot.forEach(function(messageSnapshot) {
        var latitude = messageSnapshot.child('latitude').val();
        var longitude = messageSnapshot.child('longitude').val();
        sites[siteCounter][0] = 'siteCounter';
        sites[siteCounter][1] = latitude;
        sites[siteCounter][2] = longitude;
        sites[siteCounter][3] = siteCounter;
        sites[siteCounter][4] = 'This is siteCounter.';

        siteCounter++;
        alert(sites[siteCounter][1]  + " " + sites[siteCounter][2] );
      });
    });

但是这对于站点[siteCounter][0] 会中断,并表示它是未定义的。任何线索如何使用这个?

【问题讨论】:

    标签: javascript arrays firebase


    【解决方案1】:

    如果你想要二维数组,你必须像这样初始化:

    var tab = new Array(); 
    

    之后

    tab[0] = new Array();
    

    试试这个代码

    sites[siteCounter] = new Array(); 
    sites[siteCounter][0] = 'siteCounter';
    sites[siteCounter][1] = latitude;
    sites[siteCounter][2] = longitude;
    sites[siteCounter][3] = siteCounter;
    sites[siteCounter][4] = 'This is siteCounter.';
    

    或直接

    sites[siteCounter] = new Array("siteCounter", latitude, longitude, siteCounter, "This is siteCounter."); 
    

    【讨论】:

    • 问题是我丢失了 foreach 循环之外的所有值
    • 你确定吗?因为在我用 jsFiddle 编写的这个例子中,我不会失去我的价值观 jsfiddle.net/UdD2L
    【解决方案2】:

    你有没有尝试过 sites[siteCounter] = [];sites[siteCounter][0]之前?

    我假设您必须将其声明为数组才能将内容放入数组中。

    【讨论】:

      猜你喜欢
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多