当前位置: 首页 > news >正文

js判断是个变量和属性是否是有效值

在严格判断中,“有意义的数据”通常指排除所有假值、空内容、无效结构的数据,具体包括:

  • 排除 nullundefinedfalse0NaN 等基础假值;
  • 排除空字符串('')、纯空格字符串(' ');
  • 排除空数组([])、空对象({})、空 Map/Set 等无内容的引用类型;
  • 排除无效日期(new Date('invalid'))等结构无效的数据。

严格判断函数实现

以下是一个覆盖常见场景的严格判断函数,确保只有“真正有意义的数据”才被视为有效:

/*** 严格判断变量是否为有意义的有效值* @param {any} value - 需要判断的变量或属性值* @returns {boolean} 是否为有效值*/
function isValidValue(value) {// 1. 排除基础假值:null、undefined、false、0、NaNif (value === null || value === undefined) return false;if (typeof value === 'boolean' && value === false) return false;if (typeof value === 'number' && (value === 0 || isNaN(value))) return false;// 2. 处理字符串:排除空字符串和纯空格字符串if (typeof value === 'string') {return value.trim().length > 0; // 非空且非纯空格}// 3. 处理数组:排除空数组if (Array.isArray(value)) {return value.length > 0;}// 4. 处理对象(排除数组、null,因为 typeof null 是 'object')if (typeof value === 'object' && !Array.isArray(value)) {// 排除空对象(无自有属性)if (Object.keys(value).length === 0) return false;// 排除无效日期(如 new Date('invalid'))if (value instanceof Date && isNaN(value.getTime())) return false;// 其他对象默认有效(有结构即视为有意义)return true;}// 5. 处理 Map/Set:排除空集合if (value instanceof Map || value instanceof Set) {return value.size > 0;}// 6. 其他类型:函数、正则、非空引用等视为有效// (如函数、正则表达式、非空DOM元素等)return true;
}

关键场景测试用例

// 基础类型测试
console.log(isValidValue(null));          // false(null)
console.log(isValidValue(undefined));     // false(undefined)
console.log(isValidValue(''));            // false(空字符串)
console.log(isValidValue('   '));         // false(纯空格字符串)
console.log(isValidValue(0));             // false(数字0)
console.log(isValidValue(NaN));           // false(无效数字)
console.log(isValidValue(false));         // false(布尔假值)
console.log(isValidValue('hello'));       // true(非空字符串)
console.log(isValidValue(123));           // true(非0数字)
console.log(isValidValue(true));          // true(布尔真值)// 引用类型测试
console.log(isValidValue([]));            // false(空数组)
console.log(isValidValue([1, 2]));        // true(非空数组)
console.log(isValidValue({}));            // false(空对象)
console.log(isValidValue({ name: 'a' })); // true(非空对象)
console.log(isValidValue(new Map()));     // false(空Map)
console.log(isValidValue(new Set([1])));  // true(非空Set)// 特殊类型测试
console.log(isValidValue(new Date('invalid'))); // false(无效日期)
console.log(isValidValue(new Date()));          // true(有效日期)
console.log(isValidValue(/regex/));            // true(正则表达式)
console.log(isValidValue(() => {}));           // true(函数)

核心判断逻辑说明

  1. 基础类型:仅保留非空字符串(非纯空格)、非0数字、布尔真值。
  2. 引用类型
    • 数组/集合(Map/Set)必须有元素(length > 0size > 0);
    • 对象必须有自有属性(排除空对象 {});
    • 日期必须有效(date.getTime() 不为 NaN)。
  3. 边缘场景:函数、正则表达式等“有结构”的类型视为有效(即使无内容,其自身结构有意义)。

扩展说明

  • 如果业务中 0 是有效数据(如“数量为0”),可移除 value === 0 的判断;
  • 如果纯空格字符串需要视为有效(如用户输入的空格),可删除字符串判断中的 .trim()
  • 对于自定义对象(如类实例),可补充判断逻辑(如检查关键属性是否存在)。

此函数可根据具体业务场景微调,但核心思想是排除所有“无实际内容或结构无效”的数据

http://www.dtcms.com/a/309489.html

相关文章:

  • PixelCNN介绍:VQ-VAE的前一步探索
  • 2025年Python Web框架之争:Django、Flask还是FastAPI,谁将主宰未来?
  • JsHook入门
  • 什么是爬虫协议?
  • 如何优雅删除Docker镜像和容器(保姆级别)
  • 热能小车cad【12张】三维图+设计说明书
  • 机械学习中的一些优化算法(以逻辑回归实现案例来讲解)
  • 【Flutter3.8x】flutter从入门到实战基础教程(五):Material Icons图标的使用
  • 燃气营商环境测评:以用户反馈推动服务升级​(第三方市场调查)
  • 逻辑回归----银行贷款模型优化
  • 嵌入式教学的云端革命:高精度仿真如何重塑倒车雷达实验与工程教育——深圳航天科技创新研究院赋能新一代虚实融合实训平台
  • IIS 让asp.net core 项目一直运行
  • Linux文件系统理解2
  • OpenGL Camera
  • 【03】海康MVS V4.3.0 ——安装教程、查看示例、库、头文件、开发指南
  • vue项目预览pdf隐藏工具栏和侧边栏
  • YOLOv8/YOLOv11 C++ OpenCV DNN推理
  • 人机协作!智慧环卫如何实现按需清扫?
  • 【支持Ubuntu22】Ambari3.0.0+Bigtop3.2.0——Step7—Mariadb初始化
  • 链接脚本中. = ALIGN(4);的作用?
  • C++ --- stack和queue的使用以及简单实现
  • 高级11-Java日志管理:使用Log4j与SLF4J
  • 【Electron】打包后图标不变问题,图标问题
  • 支持selenium的chrome driver更新到138.0.7204.183
  • uv 常用指令
  • GitLab Docker Compose 迁移后 Redis 权限问题排查与解决
  • 计算机网络:点分十进制如何转化为32位4字节二进制表现形式
  • 在Centos7中安装gitlab
  • elementui中rules的validator 用法
  • 3ds Max V-Ray渲染崩溃?8招告别卡顿冻结