javascript - 从空值和未定义中清除对象
问题描述
我编写了以下函数,它从对象中清除空值和未定义,但由于某种原因,它也删除了值为 0 的键。
例如:
{
key1: 'value1',
key2: 0
}
该函数将删除 key2,即使它不应该。
这是功能:
const cleanJson = function cleanJson (obj) {
if (Object.prototype.toString.call(obj) !== '[object Object]') return obj;
return Object.keys(obj).filter(key => obj[key] && obj[key] !== 'delete').reduce((newObj, key) => {
newObj[key] = Object.prototype.toString.call(obj[key]) !== '[object Object]' ? obj[key] : cleanJson(obj[key]);
return newObj;
}, {});
};
请指教。
解决方案
这是使用的一种选择Object.entries
:
const myJSON = {key1:'value1', key2:0, key3:null, key4:undefined, key5:""};
const myCleanJSON = Object.entries(myJSON)
.filter(([key, value]) => (value !== null && typeof value !== 'undefined'))
.reduce((acc, b) => ((!acc.length) ? {...acc, [b[0]]: b[1] } : { [acc[0]] : acc[1], [b[0]]: b[1] }));
console.log(myCleanJSON);
推荐阅读
- docker - 容器镜像在 Docker Swarm 中运行,但不在 Kubernetes 中
- entity-framework-core - 如何在存储库模式 IdentityDBContext 类中登录 UserID 以覆盖 SaveChanges() 方法?
- javascript - 如何创建一个函数以在单击按钮时传递 ajax 数据
- quarkus - io.quarkus 和 io.quarkus.platform 的区别
- nfc - 使用 Omnikey 5127CK 阅读器阅读 Ultralight C 的第 28 页?
- node.js - 如何强制 docker 容器中的 NodeJs webapp 使用 nginx server_name 而不是 host:port
- c++ - 我可以完全静态链接 MFC 应用程序吗?
- python - 盒子大小不均匀的python热图
- flutter - Flutter onTap 停止工作并出现空错误
- android - 如何通过 TabLayout 从片段容器中的活动更改对象?