推送到多维数组

时间:2012-10-16 21:33:50

标签: javascript arrays multidimensional-array

我有一个像这样的for循环:

var mappedPoints = new Array();    

for (i=0; i<livePoints.length; i++){
            var xOptions = [];
            var useX;
            var useY;
            for (j=0; j<madeMapPoints.length; j++){
                if(parseFloat(livePoints[i].Latitude) < parseFloat(madeMapPoints[i].xpoint)){
                    break;
                }
                xOptions.push(madeMapPoints[i]);
                useX = parseFloat(madeMapPoints[i].xpoint);
            }

            for(k=0;k<xOptions.length;k++){
                if(parseFloat(livePoints[i].Longitude) < parseFloat(xOptions[k].ypoint)){
                    break;
                }
                useY = parseFloat(xOptions[k].ypoint);
            }
            var num = Math.pow(parseInt(useX+useY),2);
            mappedPoints[num].push(livePoints[i]);
        }

在底部附近有一行mappedPoints[num].push(livePoints[i]);。我想要发生的是推送到我在num中定义的索引,所以如果NUM再次出现相同的值,它将被推送到num中定义的数组键。

我所拥有的不起作用。 PHP等价物做我想要的东西是这样的:

$mappedPoints[$useX."_".$useY][] = livePoints[i];

我可以用某种方式用JS完成相同的结果吗?

1 个答案:

答案 0 :(得分:2)

您应首先检查mappedPoints[num]是否为数组。 但我想在这种情况下你需要的mappedPoints不是一个数组,你需要一个对象。

在javascript中,关联数组不存在,但可以使用对象进行模拟。 这有点令人困惑,因为两者都可以以相同的方式访问。

在开始:

var mappedPoints = {}; //this way you define mappedPoints to be an object

最后:

if(!mappedPoints.hasOwnProperty(num))
    mappedPoints[num] = []; //this way you define mappedPoints[num] to be an array

mappedPoints[num].push(livePoints[i]);