You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何找出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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:37:45