首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改进清理嵌套对象方法以同时删除空对象

如何改进清理嵌套对象方法以同时删除空对象
EN

Stack Overflow用户
提问于 2021-07-02 22:26:19
回答 2查看 27关注 0票数 0

需要改进清理嵌套对象的方法以删除空对象

代码语言:javascript
复制
const sanitizeNestedObject = obj => JSON.parse(JSON.stringify(obj), (key, value) => {
    if (value === null || value === "" || value === [] || value === {}) return undefined
    return value
})

清洗后的输出

代码语言:javascript
复制
{"expressions":[{
"hasSchemaTag":{"schemaTag":"Hardware"}},
{"hasAttribute":{"attribute":"serialNumber"}},{},{},
{"hasAnySchemaTags":{"schemaTags":["UCSFanModule","UCSMemoryArray"]}},{},{}
]}

清洗后的预期输出

代码语言:javascript
复制
{"expressions":[{
"hasSchemaTag":{"schemaTag":"Hardware"}},
{"hasAttribute":{"attribute":"serialNumber"}},
{"hasAnySchemaTags":{"schemaTags":["UCSFanModule","UCSMemoryArray"]}}
]}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-02 23:02:22

只需检查对象是否有键(将涵盖数组和对象)。如果不是,就修剪掉:

代码语言:javascript
复制
const sanitizeNestedObject = obj => JSON.parse(JSON.stringify(obj), (key, value) => {
  if (value === null || value === "" || (typeof value === 'object' && !Object.keys(value).length)) return undefined
  return value
})

当然,您可以将该函数缩短为:

代码语言:javascript
复制
const sanitizeNestedObject = obj => JSON.parse(JSON.stringify(obj), (key, value) => {
  return (value === null || value === "" || (typeof value === 'object' && !Object.keys(value).length) ? undefined : value)
})

结果:

代码语言:javascript
复制
{"expressions":[{"hasSchemaTag":{"schemaTag":"Hardware"}},{"hasAttribute":{"attribute":"serialNumber"}},{"hasAnySchemaTags":{"schemaTags":["UCSFanModule","UCSMemoryArray"]}}]}

为了安全起见,我还检查了其他值:

这(请注意数字、字符串和空数组):

代码语言:javascript
复制
{"expressions":[{"hasSchemaTag":{"schemaTag":"Hardware"}},{"hasAttribute":{"attribute":"serialNumber"}},{},{},[],[],["a","b","",18,0],{"hasAnySchemaTags":{"schemaTags":["UCSFanModule","UCSMemoryArray"]}},{},{}]}

深入了解以下内容:

代码语言:javascript
复制
{"expressions":[{"hasSchemaTag":{"schemaTag":"Hardware"}},{"hasAttribute":{"attribute":"serialNumber"}},["a","b",18,0],{"hasAnySchemaTags":{"schemaTags":["UCSFanModule","UCSMemoryArray"]}}]}
票数 1
EN

Stack Overflow用户

发布于 2021-07-02 22:36:13

obj上使用Remove empty objects from an object的答案之一,然后再将其放入JSON.stringify()。注意改变对象!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68226874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档