Javascript JSON关联数组的编码

时间:2014-06-03 14:50:33

标签: javascript arrays multidimensional-array push

我知道这里发布的JavaScript Array.push()方法存在一些问题,但我无法使用以下示例:

首先,我得到了一个全局数组:

    var results = new Array();
    for (var i = 0; i < X.length; i++) {
     results[i] = new Array();
    }

现在应该在按钮事件上填充此数组。我想要的只是用新阵列填充数组并将一些数据推送给它们。以下代码应检查results[x][y]是否已经是一个数组(如果不是则创建一个数组)并将数据推送到它。

所以,最后,应该有一个包含X.length数组的数组(结果),这些数组填充了未知数量的新数组,每个数组包含未知数量的数据:

    function pushResult(result) {

        if (typeof results[currentStim][currentDist] == 'undefined') {
            results[currentStim][currentDist] = new Array();
        }
            results[currentStim][currentDist].push(result);
    }   

问题是:它不起作用。我确保currentStim永远不会超出范围,我确保只在需要时才访问“if”-Statement(因此不会用新的数据覆盖数组)并且我看了返回值push(),总是抛出一个代表新数组长度的数字。正如预期的那样,这个数字会延迟一个值被推送到数组。

然而,当我最后打电话时:

document.getElementById('results').value =  JSON.stringify(results);

results传递给我的PHP脚本,会传递这样的内容:

 [[],[[1]],[],[]]

push()被称为MUCH的频率超过一次(至少“1”是我想要存储的结果之一),如上所述,总是返回一个递增的arrayLength。这是如何运作的?我的数据怎么了?

我在Chrome和Firefox上测试了这个,结果相同。可能有趣的是,单独的循环同时绘制到Canvas,但是不应该插入Array-Handling和onKey-Events,对吗?

希望你能帮助我,

MA3o

编辑:

像这样调用pushResult:

    // Handles Space-Events     
    function pushed(event) {
        if (event.which == 32 && stimAlive) {
            pushResult(1);
            hitCurrent = true;
        }

其中hitCurrent和stimAlive只是在其他地方设置的标志。一些代码进一步将函数pushed注册为事件监听器:

 document.onkeydown = function(event) { pushed(event)}

正确调用所有函数。就我所见,将console.log(结果)添加到每个循环只显示正确的数组。

根据评论,问题可能是“currentDist”可以是浮点值。

0 个答案:

没有答案