博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组循环删除的问题
阅读量:5926 次
发布时间:2019-06-19

本文共 860 字,大约阅读时间需要 2 分钟。

问题描述

简单的需求,要删除数组中不符合条件的元素。

错误实现

最初的实现,foreach循环,发现就是不对。

// 如果学科存在idif (discipline.id) {    // foreach类别    angular.forEach(result, function(value, key) {        // 如果该类别有对应学科(考虑到“请选择的情况下”会报从undefined上获取id)        // 并且该学科类别id不等于传入学科id        if (value.discipline && !angular.equals(value.discipline.id, discipline.id)) {            // 移除不符合要求的元素            result.splice(key, 1);        }    });}

每次删除时,都是根据key进行删除的,但是删除之后,数组的长度就会发生变化,导致下次再根据key去删除,发现长度变了,我们想删除的元素的位置也变了。

解决方案

Java中,我们使用iterator方法拿到其迭代对象,然后对其进行修改。

// 如果学科存在idif (discipline.id) {    /**     * 数组过滤     * 接收一个函数,根据该函数返回为true/false     * 决定该元素保留还是删除     */    result = result.filter(function(value) {        // 兼容请选择项,默认保留        if (!value.discipline) {            return true;        }        // 保留器具类别的学科id与当前学科id相同的项        return angular.equals(value.discipline.id, discipline.id);    });}

转载地址:http://szsvx.baihongyu.com/

你可能感兴趣的文章
联想看好印度巴西市场 能弥补中国市场下滑影响
查看>>
《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》——第3章 数据安全工具DRBD、extundelete 3.1 数据镜像软件DRBD介绍...
查看>>
最新的黑客大杀器:Google Dorking
查看>>
中国移动再启大规模光缆集采:产业界喜迎大蛋糕
查看>>
竞争抄袭? 如何占领SaaS产品市场
查看>>
世界最大OpenStack私有云是如何运营的
查看>>
全球物联网专利竞争态势分析
查看>>
《网络安全法》为大数据保驾护航
查看>>
微软Edge浏览器开始支持WebVR
查看>>
QDialog之屏蔽Esc键
查看>>
CSS3之创建透明边框三角
查看>>
Android 多媒体库新漏洞 2.75亿部设备受影响
查看>>
《I'm a Mac:雄狮训练手册》——0.2 OS X
查看>>
《Splunk智能运维实战》——1.8 定义字段提取内容
查看>>
《UNIX网络编程 卷1:套接字联网API(第3版)》——2.8 SCTP关联的建立和终止...
查看>>
前甲骨文 Linux 部门主管加入微软
查看>>
深度学习项目实战——“年龄预测”
查看>>
《为自己工作——世界顶级设计师成功法则》—第3章3.1节什么是利基
查看>>
Mybatis调用MySQL存储过程的简单实现
查看>>
《CUDA C编程权威指南》——3.8节习题
查看>>