如何找出JavaScript对象中值为null或空字符串的属性?
找出JavaScript对象中值为null或空字符串的属性
嘿,这事儿好办!我给你分享两种简单可靠的方法来完成这个需求,先提一句:你给出的示例对象语法有点小问题,属性之间需要用逗号分隔,我已经在下面的代码里修正了。
我们先明确目标对象:
const person = { firstname: "John", middlename: null, lastname: "Mayer", age: "", gender: "Male" };
方法一:使用Object.entries()结合数组方法(简洁现代写法)
这种方法利用ES6特性,代码更简洁易读:
// 定义一个通用函数 const getEmptyOrNullProps = (obj) => { // 把对象转为键值对数组,过滤出符合条件的项,再提取键名 return Object.entries(obj) .filter(([key, value]) => value === null || value === "") .map(([key]) => key); }; // 调用函数获取结果 const result = getEmptyOrNullProps(person); console.log(result); // 输出: ["middlename", "age"]
逻辑说明:
Object.entries(obj)会把对象转换成[[key1, value1], [key2, value2]]格式的数组filter方法筛选出值为null或者空字符串""的键值对map方法只保留键名,最终得到我们需要的属性列表
方法二:使用for...in循环(基础兼容写法)
如果你需要兼容更老的环境,或者更喜欢基础的循环写法,可以用这个:
const getEmptyOrNullProps = (obj) => { const emptyProps = []; // 遍历对象的所有可枚举属性 for (const key in obj) { // 确保只处理对象自身的属性,避免遍历原型链上的属性 if (obj.hasOwnProperty(key)) { const value = obj[key]; if (value === null || value === "") { emptyProps.push(key); } } } return emptyProps; }; // 调用函数获取结果 const result = getEmptyOrNullProps(person); console.log(result); // 输出: ["middlename", "age"]
逻辑说明:
- 用
for...in遍历对象的属性 - 用
hasOwnProperty检查属性是否属于对象自身(避免意外拿到原型链上的属性) - 判断属性值是否为
null或空字符串,符合条件就加入结果数组
这两种方法都能完美满足你的需求,你可以根据自己的代码风格和环境选择合适的写法~
内容的提问来源于stack exchange,提问作者justin hernandez
相关产品推荐
相关产品推荐

