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

  • incognitotraveler

    incognitotra

    27 Mayıs 2010
  • kev5124

    kev5124

    9 Kasım 2008
  • TantalizingTrance

    TantalizingT

    15 ŞUBAT 2009