作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从嵌套 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/
我是一名优秀的程序员,十分优秀!