描述

在vue项目中做表格增加行的时候,校验行内单元格某些字段的必填项,刚开始使用forEach进行循环遍历数组对象,然后判断对象的键值是否为空,为空则跳出循环,提示需要填写必填项,否则提示进行增加行。

forEach形式返回

isCheckRowRequired () { // 检测新增行内容必填项// let checkArr = ['packageName', 'bidFee', 'checkPrice', 'bidStatus'];let checkArr = ['packageName', 'bidStatus']; // 排除金额的,金额可为0, 0为false ,可单独验证 || lastRow['bidFee'] < 0 || lastRow['checkPrice'] < 0,此处金额默认为0this.tableData.forEach(item => {for (const key in item) {if (!item[key] && checkArr.indexOf(key) >= 0) {return false;}}})return true;
},
// 调用此满足条件方法会返回true

for循环形式,会跳出循环

isCheckRowRequired () { // 检测新增行内容必填项// let checkArr = ['packageName', 'bidFee', 'checkPrice', 'bidStatus'];let checkArr = ['packageName', 'bidStatus']; // 排除金额的,金额可为0, 0为false ,可单独验证 || lastRow['bidFee'] < 0 || lastRow['checkPrice'] < 0,此处金额默认为0for (let i = 0; i < this.tableData.length; i++) { // 校验所有行,解决填了之后删除的问题for (let key in this.tableData[i]) {if (!this.tableData[i][key] && checkArr.indexOf(key) >= 0) {return false;}}}return true;
},
// 此方法会跳出循环

上述两种方式调用的区别比较

假设条件:如果调用isCheckRowRequired()方法,假如表单为空,满足if判断条件:

  1. 则forEach中return之后,后面的循环还会执行,会返回true。
  2. 如果使用for循环,则会跳出循环,返回false,后面不执行
if (!this.isCheckRowRequired()) {this.$Message.error(`请填写详细列表必填项后再新增!`);return false;
}

简单案例二

<script>window.onload = function() {let arr = [1, 2, 3, 4, 5]arr.forEach(item => {if (item === 2) {return true;}console.log(item); // 1 3 4 5})for (let index = 0; index < arr.length; index++) {if (arr[index] === 2) {return true;}console.log(arr[index]); // 1}}
</script>

switch case的妙用

方式一:

calculationRangeAmount (price) { // 当“是否投标”为是即状态为1的时候,投标保证金根据限价自动计算switch (true) { // 不能写switch(price),因为表达式值为bool类型,如果case后面是表达式,如果写成这种,会直接执行default。case price < 20:return 0;case price < 50:return 4000;default:return 8000;}
}

方式二:正常使用

var d=new Date().getDay();
switch (d)
{ case 0:x="今天是星期日"; break; case 1:x="今天是星期一"; break; case 2:x="今天是星期二"; break; case 3:x="今天是星期三"; break; case 4:x="今天是星期四"; break; case 5:x="今天是星期五"; break; case 6:x="今天是星期六"; break;
}

js的for循环中return可以跳出循环,而使用forEach等不可以跳出循环相关推荐

  1. php 循环中return,php中for循环遇上return的示例代码分享

    先看下以下方法的打印结果以及返回值:public static void main(String[] args) { System.out.println("返回值:" + tes ...

  2. [译]JS闭包:For循环中的setTimeout

    译者:嘴里起了个泡 原文地址: wsvincent.com/javascript-- 这篇文章详细介绍了JS在执行for循环里面的 setTimeout() 语句的时候发什么了什么.这是面试中经常会被 ...

  3. PHP for循环中的sql语句,php – 在foreach循环中使用SQL结果

    我觉得我错过了一些愚蠢明显的东西,我试图获得SQL查询的结果,然后在循环中使用它们.我觉得我错过了一些愚蠢明显的东西,我已经尝试过,有没有注释掉的线. $sentToID = $_SESSION['u ...

  4. return的用法是什么?若用在for循环中,还会执行下一次循环吗?

    这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: 这里是修真院前端 ...

  5. el-upload在表单循环中,实现选择,删除,拖拽,并且和表单数组对上

    el-upload在表单循环中,实现选择,删除,拖拽,并且和表单数组对上: 微信: volley369 业务要求,实现以下效果: 业务要求: el-upload肯定不能一个个的写,要用json去循环 ...

  6. Vue指令之v-for——迭代数组、迭代对象中的属性、迭代数字||v-for循环中key属性的使用

    v-for循环普通数组 v-for循环对象数组 v-for循环对象 v-for迭代数字 v-for循环中key属性的使用 <!DOCTYPE html> <html lang=&qu ...

  7. html页面如何循环遍历,遍历foreach循环中的HTML DOM元素

    5 个答案: 答案 0 :(得分:3) 您可以使用closest('tr')查找最近的父tr元素,然后使用index()获取行号.试试这个: $('td').click(function() { va ...

  8. matlab for 取数组,for循环中的MATLAB和单元格数组处理

    for循环中的MATLAB和单元格数组处理 我是MATLAB新手,想从数据库中提取一个单元格数组中的数据: sensors = [ 1] [23] [1] [ 0] [0.1000] [1x29 ch ...

  9. 循环中的continue与break语句

    文章目录 前言 一.break语句 二.continue语句 总三:嵌套循环中的break和continue 总结 前言 回顾上一篇文章中学到的循环我们知道,循环主要做的一件事情利用机器强大的执行能力 ...

最新文章

  1. 为什么我还没 Fix 你的 Issue
  2. Spring 框架的设计理念与设计模式分析
  3. 如何用AI实现视频防抖?还是无需裁剪画面的那种 | 谷歌台湾大学
  4. 梳理百年深度学习发展史-七月在线机器学习集训营助你把握深度学习浪潮
  5. 点评互联网创业的“南派”和“北派”
  6. 笔记本屏幕出现横条纹_笔记本支架+拓展坞+立式无线充:给你的桌面一个简单的品质升级...
  7. 新巴巴运动网 项目第十一天
  8. ubuntu20.04自带python版本_替换 ubuntu 自带的python版本
  9. rest framework 节流
  10. 缺少ntstrsafe.lib kndis5mp.lib解决办法
  11. javascript时间函数
  12. k均值聚类算法案例 r语言iris_聚类分析—系统聚类
  13. java软件测试方法有哪些方法有哪些方法_软件测试方法和软件测试规则
  14. 局域网共享工具_局域网一键共享软件2019最新版
  15. python步态识别算法_步态识别问题3
  16. 腾讯云主机配置tomcat服务器
  17. SMEC98SP加密芯片方案实例
  18. 透过容抗来看电容量和频率的关系
  19. 小程序中设置全屏背景图
  20. 统计学的Python实现-012:峰度

热门文章

  1. C++数据类型占据多少个字节
  2. 闽高校计算机二级c语言模拟器,闽高校计算机二级C语言模拟题
  3. Cas5.3.14手机号码登录(五)
  4. targetSdkVersion 从22提到25 你需要知道的一切
  5. XP下如何共享文件,及开启相应的服务
  6. Matlab读取pfm文件
  7. ORA-01950: no privileges on tablespace ‘USERS‘
  8. 基于springboot开发餐厅点餐管理系统
  9. mysql高效率写法_Mysql模糊查询like效率,以及更高效的写法
  10. tradingview 修改K线的颜色,边框色,线条色