-2

既存のリストに追加したいオブジェクトのリストがあります。

私が現在持っているデータは次のとおりです。

var sdata = {"10":{"8":["106","22","1","1","0","0"]}};

だから私はこのような ajax リクエストを行います:

var result = ajaxFunction('call.php',hid+','+ps[0]+','+ps[1]);
if(result != false){
document.write(result);
sdata += result; //add to it
}

返され、結果に割り当てられるデータは次のとおりです。

{2: {7:[119, 22, 1, 1, 0, 0]}}

しかし、私は疑問に思っています:

sdata += result; 

新しいデータを「sdata」に追加する正しい方法は?

4

1 に答える 1

2

+=2 つのオブジェクトを結合するためではなく、加算または文字列の連結に使用されます。をまとめてループしsdata、キーごとに、 で同じ名前のキーを作成して、 の対応するデータをポイントします。JavaScript オブジェクトは一方から他方へコピーするのではなく、ポイントするだけなので、より明確な説明です。resultresultsdataresult

次のコードは、最初のレベルの値のみをコピーする単なる「浅いコピー」です。また、最初のオブジェクトのすべてを上書きします。上書きを防ぐ条件を追加できます。

for(var key in result){              //loop through new results
    if(result.hasOwnProperty(key){   //if it's an end property, not from prototype
        sdata[key] = result[key]     //put new key to old oject pointing to new set of values
    }
}

最終結果は次のようになります。

sdata = {
    "10" : {"8":["106","22","1","1","0","0"]},
    "2" : {7:[119, 22, 1, 1, 0, 0]}
}
于 2012-04-21T02:35:58.280 に答える