递归判断JS对象内所有属性值是否为空,并返回空值的key和value

news/2024/10/28 22:32:02/

递归判断JS对象内所有属性值是否为空,并返回空值的key和value

文章目录

  • 递归判断JS对象内所有属性值是否为空,并返回空值的key和value
      • 代码
      • 测试用例
      • 运行结果:

代码

const paramsValidate = (obj: any, ...roles: Array<Array<string>>) => {let currentKey:Array<string> = [] // 当前的Keylet unValidateKeyArr:Map<Array<string>, string> = new Map() // 未通过的Keyconst valNull = (obj: any) => {for(let k in obj) {    if(obj[k] instanceof Object) {currentKey.push(k)valNull(obj[k])currentKey.pop()} currentKey.push(k)// 判定空值const valueRule = obj[k] === undefined || obj[k] === null || obj[k] === ''// 判断空对象,空数组const objRule = obj[k] instanceof Object && Object.keys(obj[k]).length === 0// 判定是否跳过该条件const customRole = !roles.find(role => {return JSON.stringify(role) === JSON.stringify(currentKey)})if((valueRule || objRule) && customRole) {unValidateKeyArr.set(currentKey.slice(), obj[k])}currentKey.pop()}return unValidateKeyArr}return valNull(obj)
}

测试用例

let o = {name: "张三Z", age: undefined,school: null,idCard: { id: '', img: ''},id: '',arr: [],t: {}
}
const valrs = paramsValidate(o, ['idCard','id'])
console.log(valrs)

运行结果:

Map(6) {[ 'age' ] => undefined,[ 'school' ] => null,[ 'idCard', 'img' ] => '',[ 'id' ] => '',[ 'arr' ] => [],[ 't' ] => {}
}

http://www.ppmy.cn/news/565689.html

相关文章

latex beamer 空一行_吾空X5空妖系列笔记本开启预售,支持144Hz刷新率,WiFi6,性能爆表...

在笔记本这个市场&#xff0c;细分也比较明显&#xff0c;商务本&#xff0c;轻薄本&#xff0c;游戏本&#xff0c;厂商各有专注&#xff0c;消费者也各取所需&#xff1b;近年来&#xff0c;吾空笔记本也越来越受玩家的喜欢&#xff0c;那么作为玩家的专属定制级笔记本电脑品…

让空灵占据心灵

“ 春--- 伴着雨丝来的&#xff0c;淅淅沥沥 如诗如画&#xff0c;翩然而至&#xff1b; 也是捧着雨滴走的&#xff0c; 滴滴答答&#xff0c;如泣如诉&#xff0c; 不忍离去&#xff01;” 一位诗人用这样美丽的文字&#xff0c;写出了暮春时节的真实景象&#xff0c;也写出了…

此心安处是吾乡

《定风波常羡人间琢玉郎》 苏轼 常羡人间琢玉郎&#xff0c;天教分付点酥娘。 自作清歌传皓齿&#xff0c;风起&#xff0c;雪飞炎海变清凉。 万里归来年愈少&#xff0c;微笑&#xff0c;笑时犹带岭梅香。 试问岭南应不好&#xff1f; 却道&#xff0c;此心安处是吾乡。 【…

postman 发送post请求,PHP后端接收到的数据为空

如题&#xff0c;使用postman发送请求时&#xff0c;在后端接收到的数据为空 解决方法&#xff1a; 1.Headers配置&#xff1a; 新增一个指定类型为json数据的键值对&#xff0c;即&#xff1a; Content-type : application/json;charsetutf-8 具体如下图&#xff1a; 2.B…

php empty 0问题,解析:php empty 和空字符串区别

如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。 除了当变量没有置值时不产生警告之外,empty() 是 (boolean) var 的…

对象数组空指针异常

Java中对象数组空指针异常问题 记录一个Java中遇到的问题。 在图的广度优先遍历中用到了队列&#xff0c;在类中定义的内部类&#xff0c;并且在外部类中声明了内部类的一个对象数组&#xff0c;但是在使用对象数组时一直报 NullPointerException。 部分代码如下&#xff1a; p…

java当中如何让返回值不为空?

java当中如何让返回值不为空&#xff1f;你不仅要有方法和方法体&#xff0c;还要调用&#xff0c;还要创建一个变量名&#xff0c;然后打印&#xff0c;只有这样才能让返回值不为空。这样的话&#xff0c;就不用再另外创建一个类进行测试了。其他的我都不说了&#xff0c;想必…

layui table 表格最后多出一列空白问题

layui table 表格最后多出一列空白&#xff0c;如图红框部分&#xff1a; 解决方法一&#xff1a; 修改css样式&#xff0c;如下&#xff1a; .layui-table-view .layui-table {width: 100% !important; }.layui-table th {text-align: -webkit-center !important; } 效果如…