js:循环查询数组对象中的某一项的值是否为空

循环检查 selinfo 数组中的每一个对象,判断其中的 po_qty 和 price 是否为空(nullundefined 或空字符串 ""),可以使用以下几种方法:


方法1:使用 forEach 循环检查每一项

const selinfo = this.data.selinfo;selinfo.forEach((item, index) => {if (!item.po_qty || !item.price) {console.log(`第 ${index + 1} 项数据不完整:`, item);// 可以在这里处理不符合条件的数据}
});

判断逻辑

  • !item.po_qty → 检查 po_qty 是否为 nullundefined0 或 ""

  • !item.price → 检查 price 是否为 nullundefined0 或 ""

如果你希望 严格判断空值(仅 null 或 undefined,可以改成:

if (item.po_qty == null || item.price == null) {console.log(`第 ${index + 1} 项数据为空:`, item);
}

方法2:使用 some() 检查是否有任意一项为空

const hasEmptyData = selinfo.some(item => !item.po_qty || !item.price);if (hasEmptyData) {console.log("存在数据不完整的项");
} else {console.log("所有数据完整");
}

方法3:使用 filter() 获取所有不完整的数据

const incompleteItems = selinfo.filter(item => !item.po_qty || !item.price);if (incompleteItems.length > 0) {console.log("以下数据不完整:", incompleteItems);
} else {console.log("所有数据完整");
}

方法4:使用 map() 返回检查结果

const checkResults = selinfo.map(item => ({...item,isValid: item.po_qty != null && item.price != null,
}));console.log("检查结果:", checkResults);

输出示例:

[{ id: 1, po_qty: 10, price: 100, isValid: true },{ id: 2, po_qty: null, price: 50, isValid: false },{ id: 3, po_qty: 5, price: null, isValid: false }
]

严格判断空值(排除 0 和 ""

如果 po_qty 或 price 可能是 0 或空字符串 "",但你仍然希望它们是有效值,可以这样判断:

const isInvalid = (value) => value === null || value === undefined;selinfo.forEach(item => {if (isInvalid(item.po_qty) || isInvalid(item.price)) {console.log("该项数据不合法:", item);}
});

扩展

 判断数据项中某两项的数据和另一项的数据比

判断selinfo数组中,子项now_qty与reject_qty的和是否小于inv_qty

const isRowValid = selinfo.every(row =>(row.now_qty || 0) + (row.reject_qty || 0) <= (row.inv_qty || 0)
);
if (!isRowValid) {wx.showToast({title: '输入数量请小于库存量!',icon: 'none'});return;
}

总结

方法适用场景返回值推荐度
forEach遍历并检查每一项无返回值,可执行操作✅ 推荐
some只想知道是否有空数据true / false
filter获取所有不完整的数据数组⚠️ 适用于需要具体数据时
map返回检查结果新数组⚠️ 适用于需要标记数据时

推荐方案

  • 如果只是检查是否有空数据 → some()

  • 如果需要获取哪些数据为空 → filter()

  • 如果需要遍历并处理空数据 → forEach

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/78967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!

目录 核心功能与特点安装优势亮点适用场景 还在为命令行下处理 JSON 数据烦恼吗&#xff1f;jellex 来了&#xff01;它是一款基于终端的交互式 JSON 和 JSON Lines 数据处理工具&#xff0c;让你用熟悉的 Python 语法&#xff0c;轻松过滤、转换和探索 JSON 数据。 核心功能与…

4月份到9月份看6本书第二天【ERP与企业管理】

ERP与企业管理 1-11章全面介绍了ERP的基本原理、物料管理功能、计划功能、生产和采购管理功能、效益以及实施和应用ERP为企业带来的深层次的变化。 第12章讨论了软件系统的选型。 第13章介绍了ERP实施和运行管理的方法 第14章介绍了国际上广泛使用的ERP实施应用的评估方法。…

Opencv计算机视觉编程攻略-第十三节 跟踪视频中的物品

这是opencv系列的最后一节&#xff0c;主要学习视频序列&#xff0c;上一节介绍了读取、处理和存储视频的工具&#xff0c;本文将介绍几种跟踪图像序列中运动物体的算法。可见运动或表观运动&#xff0c;是物体以不同的速度在不同的方向上移动&#xff0c;或者是因为相机在移动…

001 蓝桥杯嵌入式赛道备赛——基础

个人笔记&#xff0c;不扭扭捏捏&#xff0c;一口气到位。方便自己也方便大家 00 时钟线 cubeMX已经完成了大多数工作 01 LED&#xff08;GPIO输出&#xff09; 在使用LED的时候先把SN74HC573锁存器PD2置高电平&#xff0c;然后写入LED所要的高低电平&#xff0c;然后置PD2低…

案例-索引对于并发Insert性能优化测试

前言 最近因业务并发量上升,开发反馈对订单表Insert性能降低。应开发要求对涉及Insert的表进行分析并提供优化方案。   一般对Insert 影响基本都在索引,涉及表已按创建日期做了分区表,索引全部为普通索引未做分区索引。 优化建议: 1、将UNIQUE改为HASH(64) GLOBAL IND…

【技术文章的标准结构与内容指南】

技术文章的标准结构与内容指南 技术文章是传递专业知识、分享实践经验的重要媒介。一篇高质量的技术文章不仅能够帮助读者解决问题&#xff0c;还能促进技术交流与创新。以下是技术文章通常包含的核心内容与结构指南。 1. 标题 一个好的技术文章标题应当&#xff1a; 简洁明…

豪越消防一体化安全管控平台:构建消防“一张图”新生态

在城市化进程加速、建筑规模与功能日益复杂的当下&#xff0c;消防救援工作面临着诸多严峻挑战。火灾隐患如同隐藏在暗处的“定时炸弹”&#xff0c;广泛分布于城市的各个角落&#xff0c;想要快速、精准定位绝非易事。信息传递的不顺畅更是雪上加霜&#xff0c;导致救援效率大…

重学Redis:Redis常用数据类型+存储结构(源码篇)

一、SDS 1&#xff0c;SDS源码解读 sds (Simple Dynamic String)&#xff0c;Simple的意思是简单&#xff0c;Dynamic即动态&#xff0c;意味着其具有动态增加空间的能力&#xff0c;扩容不需要使用者关心。String是字符串的意思。说白了就是用C语言自己封装了一个字符串类型&a…

抖音IP属地可以随便选择地址吗?深度解析

在当今社交媒体盛行的时代&#xff0c;抖音作为受欢迎的短视频平台之一&#xff0c;其IP属地显示功能引发了广泛关注。许多用户好奇&#xff1a;抖音的IP属地是否可以随意更改&#xff1f;是否存在方法可以“伪装”自己的位置&#xff1f;‌本文将深入探讨这一话题。 一、抖音I…

SOLID原则详解:提升软件设计质量的关键

前言 关于设计原则SOLID具体指的是什么&#xff0c;怎么理解这些设计原则&#xff0c;我觉得有必要记录一笔&#xff0c;毕竟这个设计原则确实经常在关键技术文档中提及&#xff0c;在编程思想中提及&#xff0c;在日常的开发中使用&#xff0c;但是对我来说&#xff0c;似乎知…

如何使用 ONLYOFFICE 恢复之前的文件版本?

如何使用 ONLYOFFICE 恢复之前的文件版本&#xff1f; https://www.onlyoffice.com/blog/zh-hans/2023/04/how-to-use-version-history

简简单单实现一个Python+Selenium的自动化测试框架

什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE&#xff1a;Firefox的…

Java设计模式之中介者模式:从入门到架构级实践

一、什么是中介者模式&#xff1f; 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为型设计模式&#xff0c;其核心思想是通过引入一个中介对象来封装多个对象之间的交互关系。这种模式将原本复杂的网状通信结构转换为星型结构&#xff0c;类似于现实生活中的机…

Trinity三位一体开源程序是可解释的 AI 分析工具和 3D 可视化

一、软件介绍 文末提供源码和程序下载学习 Trinity三位一体开源程序是可解释的 AI 分析工具和 3D 可视化。Trinity 提供性能分析和 XAI 工具&#xff0c;非常适合深度学习系统或其他执行复杂分类或解码的模型。 二、软件作用和特征 Trinity 通过结合具有超维感知能力的不同交…

LeetCode 热题 100_单词拆分(86_139_中等_C++)(动态规划)

LeetCode 热题 100_单词拆分&#xff08;86_139&#xff09; 题目描述&#xff1a;输入输出样例&#xff1a;题解&#xff1a;解题思路&#xff1a;思路一&#xff08;动态规划&#xff09;&#xff1a; 代码实现代码实现&#xff08;思路一&#xff08;动态规划&#xff09;&a…

VM虚拟机安装及Ubuntu安装配置

VM虚拟机安装及Ubuntu安装配置 1、VM虚拟机安装2、创建虚拟机3、Ubuntu系统安装4、编译环境配置4.1 、Ubuntu和 Windows文件互传 文件互传4.1.1、 开启Ubunt下的FTP服务 4.2、 Ubuntu下NFS和SSH服务开启4.2.1、 NFS服务开启4.2.2、 SSH服务开启 4.3、 交叉编译器安装4.3.1 安装…

【KWDB 创作者计划】_产品技术解读_1

【KWDB 创作者计划】_产品技术解读_1 一、存储引擎:高性能混合存储架构1. 存储模型设计2. 存储压缩与编码3. 持久化策略二、KWDB 组件源码解析1. 核心模块分层架构2. 关键组件源码剖析三、KWDB 特性代码通读1. 实时分析能力(Real-Time OLAP)2. 混合负载隔离(HTAP)3. 智能索…

高速电路中的电阻、电容的选型及应用

2.1 电阻的应用 2.1.1 与电阻相关的经典案例 如果说芯片是电路的骨架&#xff0c;那么电阻就是在芯片之间起连接作用的关节。电阻的阻值、布放位置等&#xff0c;对设计的成功起着至关重要的作用。 【案例2.1】串联电阻过大&#xff0c;导致板间告警失败 某产品由业务板和主…

springBoot接入文心一言

文章目录 效果接入步骤项目接入配置类&#xff1a;WenXinYiYan前端vue代码js代码 后端mapper层service层controller层 测试代码 效果 先来看一下最后实现的效果 &#xff08;1&#xff09;未点击前的功能页面 &#xff08;2&#xff09;点击后的页面 &#xff08;3&#xff…

css解决边框四个角有颜色

效果 html <div class"gradient-corner">2021年</div>css background:/* 左上角横线 */linear-gradient(90deg, rgb(5, 150, 247) 9px, transparent 0) 0 0,/* 左上角竖线 */linear-gradient(0deg, rgb(5, 150, 247) 9px, transparent 0) 0 0,/* 右上…