gpt4 book ai didi

javascript - trim 对象树上的叶子

转载 作者:行者123 更新时间:2023-12-03 09:28:58 25 4
gpt4 key购买 nike

我有这棵“树”。

它是一个多维对象。每个“节点”最多有两个属性,分别是 datachildren

这是一个例子:

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

我需要删除任何没有 data 属性的节点并且没有任何具有 data 属性的子节点。

所以,上面的例子将变成:

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

在 JS 中实现此目的最简洁的方法是什么?

最佳答案

这可以解决问题:

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);

片段:

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>

关于javascript - trim 对象树上的叶子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31574227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com