我有一个像这样的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完成相同的结果吗?
答案 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]);