关联数组的Javascript-JSON编码

关联数组的Javascript-JSON编码,javascript,arrays,multidimensional-array,push,Javascript,Arrays,Multidimensional Array,Push,我知道这里发布的JavaScript Array.push()方法存在一些问题,但我无法让以下示例正常工作: 首先,我得到了一个全局数组: var results = new Array(); for (var i = 0; i < X.length; i++) { results[i] = new Array(); } 问题是:它就是不起作用。我确保currentsim永远不会超出范围,我确保“if”-语句只在需要时访问(因此数组不会被新数组覆盖),并

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

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

    var results = new Array();
    for (var i = 0; i < X.length; i++) {
     results[i] = new Array();
    }
问题是:它就是不起作用。我确保
currentsim
永远不会超出范围,我确保“if”-语句只在需要时访问(因此数组不会被新数组覆盖),并且我观察了
push()
的返回值,总是返回一个表示新数组长度的数字。正如预期的那样,每次将值推送到数组时,该数字都会增加

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

document.getElementById('results').value =  JSON.stringify(results);
要将
结果
传递给我的PHP脚本,将传递如下内容:

 [[],[[1]],[],[]]
push()
被调用的次数远不止一次(至少“1”是我想要存储的结果之一),并且,如前所述,总是返回一个递增的数组长度。这是怎么回事?我的数据怎么了

我在Chrome和Firefox上测试了这个,结果是一样的。有趣的是,一个单独的循环同时绘制到画布,但这不应该中断数组处理和onKey事件,对吗

希望你能帮助我

MA3o

编辑:

pushResult的名称如下所示:

    // Handles Space-Events     
    function pushed(event) {
        if (event.which == 32 && stimAlive) {
            pushResult(1);
            hitCurrent = true;
        }
hitCurrent和stimAlive只是在其他地方设置的标志。一些代码进一步将功能
推送
注册为事件侦听器:

 document.onkeydown = function(event) { pushed(event)}
所有函数都被正确调用。在我看来,将console.log(results)添加到每个循环只会显示正确的数组


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

能否提供一个,例如?
currentStim
currentDist
的值是多少?与JavaScript数组不同,JSON数组不支持命名键。它们是严格排序的列表。因此,如果任何一个变量都包含索引()以外的值,那么这些结构应该是普通的
Object
s。这些将作为键/值对字符串化为JSON。如果您正在动态地向页面添加新按钮,则需要确保这些事件处理程序被正确委派。你能展示你是如何创建新元素和附加事件的吗?@MaxMeijer no,“一个单独的循环同时绘制到画布上可能会很有趣……”。我认为函数
pushResult
是从页面上某个元素上的事件调用的,它根本没有被调用并放置一个console.log或其他东西来检查每个“结果”是什么time@miguel-svq
console.log()
是一个很好的建议。但是,JavaScript没有用于附加值的
[]=
 document.onkeydown = function(event) { pushed(event)}