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

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


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

javascript 复制代码
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 是否为 null、undefined、0 或 ""

  • !item.price → 检查 price 是否为 null、undefined、0 或 ""

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

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

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

javascript 复制代码
const hasEmptyData = selinfo.some(item => !item.po_qty || !item.price);

if (hasEmptyData) {
  console.log("存在数据不完整的项");
} else {
  console.log("所有数据完整");
}

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

javascript 复制代码
const incompleteItems = selinfo.filter(item => !item.po_qty || !item.price);

if (incompleteItems.length > 0) {
  console.log("以下数据不完整:", incompleteItems);
} else {
  console.log("所有数据完整");
}

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

javascript 复制代码
const checkResults = selinfo.map(item => ({
  ...item,
  isValid: item.po_qty != null && item.price != null,
}));

console.log("检查结果:", checkResults);

输出示例:

javascript 复制代码
[
  { 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 或空字符串 "",但你仍然希望它们是有效值,可以这样判断:

javascript 复制代码
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

javascript 复制代码
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

相关推荐
Shirley~~几秒前
three.js的调试面板工具
前端·3d
怕浪猫1 分钟前
12个UI组件库,Star最低的下载最多
前端·javascript·面试
溪语流沙7 分钟前
【Web全栈进阶】Vue3起步:组件、模板语法、响应式数据
前端·javascript·vue.js·css3
众链网络9 分钟前
Agent 重试的工程解法:幂等、断点续跑与熔断怎么落地
java·前端·数据库·人工智能
贾宝玉的玉宝贾16 分钟前
FreeSWITCH 简单图形化界面 70 - 监听/密语的lua脚本
开发语言·junit·lua·voip·freeswitch·sip·ippbx
Wang's Blog18 分钟前
Java 项目部署之 Docker工具快速入门: 镜像命令从 pull 到 load 的完整实操
java·开发语言·docker
北京盛世宏博22 分钟前
异地机房采集踩坑笔记:以太网温湿度记录仪跨网段通信调试实战
开发语言·笔记·单片机·php·传感器·温湿度
Wang's Blog25 分钟前
Java 项目部署之 Docker工具快速入门: Docker 数据卷命令与挂载实操
java·开发语言·docker
User_芊芊君子27 分钟前
JiuwenSwarm 协同智能体落地金融投研全流程:SwarmFlow 工作流编排与人机交互面板实测(A2UI v0.8 Web 通道适配)
前端·金融·人机交互
霸道流氓气质35 分钟前
AI 应用异常检测与根因分析:语义漂移检测、因果图推理与LLM-as-Judge的 Java 生产级实现
java·开发语言·人工智能