2

たとえば、次の配列を動的に作成する必要があります。

var data = { point: [
              { x:5, y:8 },
              { x:8, y:10},
              ]};

 console.log(data.point[0].x);   // 5  n=0
 console.log(data.point[1].y);   // 10 n=1

ある時点で、アプリケーションは配列を2つ以上の項目(n = 0、n = 1)に拡張する必要があります。その方法を教えてください(つまり、n = 9)。

4

4 に答える 4

2

Array.pushメソッドを使用して、要素を配列に追加できます。

var point = {x:1,y:1};
data.point.push(point);
于 2012-07-17T03:48:42.937 に答える
1

このコードのようにメソッド'push'を使用できます

        var data = { point: [
                      { x:5, y:8 },
                      { x:8, y:10},
                      ]};

         console.log(data.point[0].x);   // 5  n=0
         console.log(data.point[1].y);   // 10 n=1

        data.point.push({x:4,y:3});

        console.log(JSON.stringify(data.point));
于 2012-07-17T03:49:10.183 に答える
0

あなたはこのようなことをすることができます:

var data = {'points' : []};

function addPoint(x, y) {
    data.points.push({'x' : x, 'y' : y});
}

function getPoint(index) {
    return data.points[index];
}

addPoint(10, 20);
addPoint(5, 3);

var p = getPoint(1);
alert(p.x + ", " + p.y); //alerts => "5, 3"

これは、任意の数のポイントで機能します。

アップデート

配列をクリアするには

function clearPoints() {
    data.points = [];
}

アップデート2

単純なページがある場合、これらの小さな関数は問題なく機能します。このポイント処理が最終的に大規模なシステムの一部になる場合は、次のようなことを行う方がよい場合があります。

var data = {
    'points' : [], 
    addPoint : function(x, y) {
        this.points.push({
            'x' : x, 
            'y' : y
        });
    }, 
    getPoint : function(index) {
        return this.points[index];
    }, 
    clearPoints : function() {
        this.points = [];
    }, 
    removePoint : function(index) {
        this.points.splice(index, 1);
    }
};

使用例:

alert(data.points.length); // => 0

data.addPoint(1, 2);
data.addPoint(8, 12);
data.addPoint(3, 7);
alert(data.points.length); // => 3

var p = data.getPoint(2); //p = {x:3, y:7};

data.removePoint(1); 
alert(data.points.length); // => 2

data.clearPoints();
alert(data.points.length); // => 0

これにより、ポイントの処理を少しすっきりさせ、使いやすく、更新しやすくすることができます。

于 2012-07-17T03:55:19.607 に答える
0

前述のようにpush()関数を使用するか、インデックスを使用して配列に項目を追加することができます。これは、Googleスタイルガイドで推奨されています。後者の方法では、最後のインデックスへのポインタが必要です。

配列への値の割り当てはpush()を使用するよりも高速であるため、可能な場合は割り当てを使用する必要があることに注意してください。

for(var i=lastIndex; i < numOfNewPoints; i++){
    data.point[i] = {x:4, y:3};
}
于 2012-07-17T03:58:15.470 に答える