gpt4 book ai didi

javascript - 如何在 JavaScript 中删除嵌套的空对象?

转载 作者:行者123 更新时间:2023-12-01 00:43:56 25 4
gpt4 key购买 nike

我想从嵌套 JSON 中删除空对象。我在 SA 上检查了相当多的答案,但没有一个能满足我的需要。如有任何帮助,我们将不胜感激。我认为我也许能够减少正在工作的对象,但我必须执行此 Object.keys(obj || {}) 来阻止 Object.keys 在 undefined object 上抛出类型错误。我只想删除任何空的对象 {} 并返回带有值的对象。

提前致谢。吉米

!--- 示例对象

export const stocklevels = {
coats: {
browncoat: ["L", "M", "S"]
},
neclace: {},
earrings: {
diamond: "Y",
ruby: "Y"
},
shoes: {},
bags: {}
};

!---函数

 let newObj = Object.keys(obj || {}).reduce((x, k) => {
if (obj[k] != null) {
x[k] = obj[k];
}
return x;
}, {});
return newObj;

最佳答案

我将使用递归函数来执行此操作,该函数根据过滤后的条目重建对象:

const clean = obj =>
Object.fromEntries(
Object.entries(obj).flatMap(([k, v]) =>
String(v) !== '[object Object]' ? [[k, v]] :
(v = clean(v), Object.keys(v).length > 0 ? [[k, v]] :
[])));


console.log(clean(sample1));
console.log(clean(sample2));
<script>
const sample1 =
{ coats:
{ browncoat:
["L", "M", "S"] },
neclace:
{},
earrings:
{ diamond: "Y",
ruby: "Y" },
shoes:
{},
bags:
{} };

const sample2 =
{ a:
{ b:
{ c:
{} }},
d:
{ x : 'x' }};


</script>

关于javascript - 如何在 JavaScript 中删除嵌套的空对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57531432/

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