SORU
21 ŞUBAT 2012, Salı


Siklik içeren nesne seri hale getirilirken değer nesnesi

Diğer düğümler için başvurular hangi alt düğümler içeren bir nesne (ayrıştırma ağacı) var.

Bu nesne seri hale getirmek istiyorum, JSON.stringify(), ama ben kullanarak: bahsettiğim yapıları nedeniyle TypeError: cyclic object value.

Bu nasıl bir çözüm olabilir? Diğer düğümler için bu başvuruları temsil veya sıralanmış nesne değil olup olmadığı benim için önemli değil.

Diğer taraftan, yaratılan zaman nesnesi bu özellikleri kaldırma sıkıcı görünüyor ve çözümleyici (narcissus) değişiklik yapmak istemezdim.

CEVAP
21 ŞUBAT 2012, Salı


stringify, zaten sıralanmış nesneleri çıkarmak replacer function: ikinci parametre kullanın

seen = [];

JSON.stringify(obj, function(key, val) {
   if (val != null && typeof val == "object") {
        if (seen.indexOf(val) >= 0) {
            return;
        }
        seen.push(val);
    }
    return val;
});

http://jsfiddle.net/mH6cJ/38/

Doğru yorumlarda belirttiği gibi, bu kod "" "" olanlar. özyinelemeli görülen nesnenin her kaldırır Örneğin, için

a = {x:1};
obj = [a, a];

sonuç yanlış olacaktır. Eğer yapı bu şekilde ise, Crockford decycle daha iyi bir seçenektir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ADDVOiCE

    ADDVOiCE

    28 Mayıs 2009
  • campos9896

    campos9896

    24 Mart 2012
  • Vortez

    Vortez

    27 Temmuz 2009