js循环数组判断数组(数组对象)中是否含有某字段,有的话去除,返回新数组
1) 数组中是否存在指定值,存在就删除
var array = ['a', 'b', 'c', 'd']var index = array.indexOf('c')if (index > -1) { // >0表示存在array.splice(index, 1) //存在就删除}console.log(array) //['a', 'b', 'd']
2) 数组对象中是否存在指定值,存在就删除
var timeList =[{caseStage:'退款',operatorTime:'2021-5-27 09:16:16'},{caseStage:'退款中',operatorTime:'2021-5-28 09:16:16'},{caseStage:'退款失败',operatorTime:'2021-5-28 10:16:16'},{caseStage:'退款成功',operatorTime:'2021-5-29 09:16:16'},]for (var i = 0; i < this.timeList.length; i++) {//判断caseStage为'失败'的对象是否存在if (this.timeList[i].caseStage.indexOf('失败') > -1) {var index = ithis.timeList.splice(index, 1) //存在即删除该索引下的对象}}console.log(this.timeList)
但是我用上面这种方法会出bug,然后就用了下面的方法;
新建一个临时数组,把符合条件的放进临时数组,不符合条件的就不管了
var timeList =[{caseStage:'退款',operatorTime:'2021-5-27 09:16:16'},{caseStage:'退款中',operatorTime:'2021-5-28 09:16:16'},{caseStage:'退款失败',operatorTime:'2021-5-28 10:16:16'},{caseStage:'退款成功',operatorTime:'2021-5-29 09:16:16'},]var temp_arr = []for (var i = 0; i < this.timeList.length; i++) {//没有‘失败’字段的,重组临时数组赋值if (this.timeList[i].caseStage.indexOf('失败') == -1) {var temp_obj = {}temp_obj.caseStage = this.timeList[i].caseStagetemp_obj.operatorTime = this.timeList[i].operatorTimetemp_arr = temp_arr.concat(temp_obj)}}this.timeList = temp_arrconsole.log(this.timeList) // {caseStage:'退款',operatorTime:'2021-5-27 09:16:16'},// {caseStage:'退款中',operatorTime:'2021-5-28 09:16:16'},// {caseStage:'退款成功',operatorTime:'2021-5-29 09:16:16'},
出bug的原因:
比如说你的数组是:
【0,1,2,3,4,5】 ,总共6项,i<6对吧,
循环删除数组,比如删除了1,那么数组长度变成了5 ,i<5
继续循环删除了3,数组长度变成了4,i<4,不符合for循环条件
那么在i=4的时候就跳出了循环,相当于只循环了4次,我们是希望循环6次,删除不符合条件的数据的,但结果只循环了4次,所以会出bug
js循环数组判断数组(数组对象)中是否含有某字段,有的话去除,返回新数组相关推荐
- js移除数组中的元素(返回新数组)
移除数组中的元素(返回新数组) 移除数组 arr 中的所有值与 item 相等的元素.不要直接修改数组 arr,结果返回新的数组. 输入:[1,2,3,4,2] ,2 输出:[1,3,4] 第一种解决 ...
- 数组去重:将一数组中重复的元素去掉剩余部分保存到新数组中
思路:将旧数组中不重复的元素选取出来放到新数组中,重复的元素只保留一个放到新数组中.首先,需要定义一个新数组用来把保存元素,使用for循环来对旧数组进行遍历.根据旧数组中的元素去查询新数组,利用if条 ...
- Java黑皮书课后题第8章:*8.27(列排序)用下面的方法实现一个二维数组中的列排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵
*8.27(列排序)用下面的方法实现一个二维数组中的列排序.返回新数组,且原数组保持不变.编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵 题目 题目描述与运行示例 破 ...
- Java黑皮书课后题第8章:*8.26(行排序)用下面的方法实现一个二维数组中的行排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵
*8.26(行排序)用下面的方法实现一个二维数组中的行排序.返回新数组,且原数组保持不变.编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵 题目 题目描述与运行示例 破 ...
- js中显示一个指定html文档,JS实现选定指定HTML元素对象中指定文本内容功能示例...
本文实例讲述了JS实现选定指定HTML元素对象中指定文本内容功能.分享给大家供大家参考,具体如下: 该功能用处多多,可以灵活运用之!主要函数如下: //选中文本中指定部分 function selec ...
- containskey java_Java Map.containsKey()方法:判断Map集合对象中是否包含指定的键名
搜索热词 Java 集合类中的 Map.containsKey() 方法判断 Map 集合对象中是否包含指定的键名.如果 Map 集合中包含指定的键名,则返回 true,否则返回 false. 语法: ...
- java get null_java 获取对象中为null的字段实例代码
下面一段简单的代码给大家分享java 获取对象中为null的字段,具体代码如下所述: private static String[] getNullPropertyNames(Object sourc ...
- unshift() 方法将一个或多个元素添加到数组的开头,并返回新数组的长度
var arr = [1, 2];arr.unshift(0); //result of call is 3, the new array length //arr is [0, 1, 2]arr.u ...
- 在 MySQL 中查找含有目标字段的表
要查询数据库中哪些表含有目标字段,可以使用语句: SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLU ...
最新文章
- 一文读懂Spring中的AOP机制
- Java中的static关键字解析 转载
- python可视化神器_详解Python可视化神器Yellowbrick使用
- 深入 Lucene 索引机制
- 自动生成业务单据流水号方案
- github代码_GitHub代码空间如何提高生产力和降低障碍
- c++ mysql ctime_CTime::Format
- leetcode24题:两两交换链表的节点
- FCKeditor 2.6.4.1配置
- 箱线图怎么看_K线的48种不同类型全解(建议收藏),教你怎么看懂K线图
- Android关机流程解析
- WEB应用程序的开发和研究
- ipad 模拟 触控板_如何将蓝牙鼠标或触控板连接到iPad
- 检测图片是否被PS过,代码案例demo
- cocos2d-x csb特效文件显示
- 2020年有寓意的领证日期_2020有寓意的领证日期 2020有意义的领证日子 - 中国万年历...
- 网页的缩放,适配以及移动的适配!
- eas bos客户端获取组织,人员,用户的方法
- HTML+JS+CSS+xml快速入门
- 随机森林算法学习(RandomForest)
热门文章
- C++常用数学运算(待完结)
- 最新版本Redis:Redis 7.0 安装使用,Docke启动Redis,Redis使用场景-2022年最新Redis图解安装
- python控制手机屏幕亮度的软件_Python脚本利用adb进行手机控制
- word审阅功能、查看word文档的好姿势
- linux系统(centos)中安装中文输入法(拼音 五笔)
- 男生学电视剧中女生的说话方式,果然搞笑
- Excel+Python,简直法力无边
- 逆元的定义用处以及简单求法
- 三星S10的定价脱离现实,或难拯救手机业务
- Angular11安装NG-ZORRO步骤及注意点