Nasıl başka bir nesnenin içine bir JavaScript nesnesi kopyalayabilirim?

8 Cevap php

Ben boş bir JavaScript nesne ile başlamak istiyorum ki:

me = {};

Ve daha sonra bir dizi var:

me_arr = new Array();
me_arr['name'] = "Josh K";
me_arr['firstname'] = "Josh";

Şimdi ben me.name Josh K geri dönmek için kullanabilirsiniz böylece nesnesine bu diziyi atmak istiyorum.

Denedim:

for(var i in me_arr)
{
    me.i = me_arr[i];
}

Ancak bu, arzu edilen sonucu yoktu. Bu mümkün mü? Benim ana hedefi böylece JSON olarak (AJAX veya ne olursa olsun yoluyla) bir PHP komut dosyası için iletebilirsiniz bir JavaScript nesnesine bu dizi sarılmasıdır.

8 Cevap

Özellik adı hem de bir değişken olduğundan, döngü gibi görünmelidir:

for(var i in me_arr)
{
    me[i] = me_arr[i];
}

JSON hakkında daha fazla bilgi edinmek için, this article yararlı olabilir.

Sen json_encode gibi basit bir şey arıyor olabilir

http://php.net/manual/en/function.json-encode.php

Yukarıdaki kodda, sen tekrar tekrar me.I özelliğini ayarlarken. Burada açıklayan ne yapmak, bu deneyin:

for(var i in me_arr)
{
    me[i] = me_arr[i];
}

Eğer gerçekten gibi kullanarak değil çünkü Birincisi, "me_arr", Array olmamalıdır.

var me_arr = {};
me_arr.name = "Josh K";
me_arr.firstname = "Josh";

Ya da, daha kısa:

var me_arr = { "name": "Josh K", "firstname": "Josh" };

Şimdi, döngü neredeyse doğru:

for (var key in me_arr) {
  if (me_arr.hasOwnProperty(key))
    me[key] = me_arr[key];
}

Ben nokta iki ilk etapta değişkenleri, ama ne olursa olsun sahip ne olduğundan emin değilim. Ayrıca:! make sure you declare variables with var

Kontrol etmelisiniz JSON in JavaScript. Eğer JSON nesneleri oluşturmanıza yardımcı olabilir JSON library bir indirme vardır.

Neden sadece yapmayın:

me['name'] = "Josh K";
me['firstname'] = "Josh";

?
This is the same as

me.name = "Josh K";
me.firstname = "Josh";

"associative arrays in JS" ile ilgili bu ilginç makaleyi okuyun.

Bitmiş dizisinde json_encode() kullanın.

Gerçekten referanslar endişesi olmadan bir nesneyi klonlamak için en kolay yoludur

var newObj = JSON.parse(JSON.stringify(oldObj));

Eğer nesneleri işlevleri varsa yaşayabilir, çok uygun değil.