JS去除对象或数组中的空值('',null,undefined,[],{})
javascript去掉对象或数组中的'',null,undefined,[],{}。
思路就是创建一个新的空对象,然后对传入的对象进行遍历,只把符合条件的属性返回,保留有效值,然后就相当于把空值去掉了。
(可以根据注释来修改方法决定要去除哪些属性)
function removeEmptyField(obj) { var newObj = {} if (typeof obj === 'string') { obj = JSON.parse(obj) } if (obj instanceof Array) { newObj = [] } if (obj instanceof Object) { for (var attr in obj) { // 属性值不为'',null,undefined才加入新对象里面(去掉'',null,undefined) if (obj.hasOwnProperty(attr) && obj[attr] !== '' && obj[attr] !== null && obj[attr] !== undefined) { if (obj[attr] instanceof Object) { // 空数组或空对象不加入新对象(去掉[],{}) if(JSON.stringify(obj[attr]) === '{}' || JSON.stringify(obj[attr]) === '[]') { continue } // 属性值为对象,则递归执行去除方法 newObj[attr] = removeEmptyField(obj[attr]) } else if ( typeof obj[attr] === 'string' && ((obj[attr].indexOf('{') > -1 && obj[attr].indexOf('}') > -1) || (obj[attr].indexOf('[') > -1 && obj[attr].indexOf(']') > -1)) ) { // 属性值为JSON时 try { var attrObj = JSON.parse(obj[attr]) if (attrObj instanceof Object) { newObj[attr] = removeEmptyField(attrObj) } } catch (e) { newObj[attr] = obj[attr] } } else { newObj[attr] = obj[attr] } } } } return newObj } const testObj = { a: '', b: 123, c: null, d: undefined, e: [], f: [1,2,3,'',null], g: {}, h: {x:1,y:'',z:null} } console.log(removeEmptyField(testObj)) console.log(JSON.stringify(removeEmptyField(testObj)))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库