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

  • Candyrat Records

    Candyrat Rec

    10 Mayıs 2006
  • ethr95awd

    ethr95awd

    8 Kasım 2006
  • Matt Harding

    Matt Harding

    23 Mayıs 2006