1

我有一个这样的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 完成相同的结果吗?

4

1 回答 1

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]);
于 2012-10-17T02:31:52.197 回答