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 に答える