请教一个清空深数组或深对象里部分非值的方法?

如题,入参是一个未知的数据结构,可能是对象或是一个数组,过滤掉里面所有空字符串,null, undefined,NaN等, 但是不包括数字0和false,(包括空对象或者空数组)。有什么性能较优的方法处理吗?

阅读 2.8k
4 个回答

首先 JSON.stringify可以清除掉undefined,NaN,function
然后对字符串做处理
大概代码如下
JSON.stringify({a:0, b: null, c: undefined, d:NaN, e:function() {}, f: '', g: [], h: {}}).replace(/,?"[a-zA-Z0-9_]+\"\:((\{\})|(\[\])|""|null)/g, '')
最后再JSON.parse一下就好了

这种深层次的数据结构,循环遍历处理非值

封装一个递归去处理,看使用场景,我这个没处理NaN
000.png

不确定层级肯定是递归去解决

  1. 判断是对象就调用自自身
  2. 然后就是判断是不是为空

    1. 不为空,就return出去赋值
    2. 为空(过滤掉里面所有空字符串,null, undefined,NaN等, 但是不包括数字0和false),就放弃赋值。

大概的实现逻辑可以参考深拷贝、或者说发ajax时的一些过滤方法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题