Bir nesne ağacının üstündeki yaprakları Kırpma

oy
0

Bu ağaç var.

Bu, çok-boyutlu bir amacıdır. Her bir düğüm En az iki özelliklere sahiptir datave children.

İşte bir örnek:

{Account: { data: ['stuff'], children: {
  share: {data: ['stuff'], children: {
    share name: {},
    share hold: { data: ['stuff'] }   
  }},
  card: { children: {
    card_access: { data: ['stuff'] } 
  }},
  loan: { children: {
    loan_name: {}
  }}
}}

Ben yok düğümlerin kaldırmak gerekir dataözelliği de ve bir ile herhangi bir çocuk yok dataözniteliği.

Yani, yukarıdaki örnek olacak:

{Account: { data: ['stuff'], children: {
  share: {data: ['stuff'], children: {
    share hold: { data: ['stuff'] }   
  }},
  card: { children: {
    card_access: { data: ['stuff'] } 
  }},
}}

JS Bunu başarmak için en özlü yolu nedir?

Oluştur 22/07/2015 saat 20:23
kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
1

Bu hile yapar:

function trimEmpty(obj) {
  for(var o in obj) {
    if(typeof obj[o] === 'object') trimEmpty(obj[o]);
    if(JSON.stringify(obj[o]) === '{}') delete obj[o];
  }
} //trimEmpty

trimEmpty(obj);

pasajı:

var obj = {
  Account: {
    data: ['stuff'],
    children: {
      share: {
        data: ['stuff'],
        children: {
          share_name: {},
          share_hold: {
            data: ['stuff']
          }
        }
      },
      card: {
        children: {
          card_access: {
            data: ['stuff']
          }
        }
      },
      loan: {
        children: {
          loan_name: {}
        }
      }
    }
  }
}

function trimEmpty(obj) {
  for(var o in obj) {
    if(typeof obj[o] === 'object') trimEmpty(obj[o]);
    if(JSON.stringify(obj[o]) === '{}') delete obj[o];
  }
} //trimEmpty

trimEmpty(obj);
document.querySelector('pre').innerHTML= JSON.stringify(obj, null, 2);
<pre></pre>

Cevap 22/07/2015 saat 20:41
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more