js数组遍历删除指定元素,因为使用下标删除不准确,所以用以下方法解决
普通删除方法:删除不彻底
方法一:使用添加元素的方法.push()
var arr = [3, 0, 11, 0, 3, 0, 66]; var newArry = []; for (var i = 0; i < arr.length; i++) { if (arr[i] != 0) { newArry.push(arr[i]); } } console.log(newArry);
方法二:使用.splice()
var arr = [3, 0, 11, 0, 3, 0, 66]; for (var i = 0; i < arr.length; i++) { if (arr[i] == 0) { arr.splice(i, 1); } } console.log(arr);
具体情况:如果去除指定元素在数组中连续出现几个,不进行处理会存在删漏掉的情况
原因:在循环遍历的时候,i是元素的下标值,删除数组中某个元素的时候,循环i的值不变,但是里面的元素少了,相对应的元素就会向前靠,这样就会漏掉相邻的需要删除的元素;用方法三和方法四,就会避免出现这个问题,强力推荐方法四。
根本解决的方法如下:
方法三:使用.splice(),使用倒序遍历;
var arr = [3, 7, 11, 0, 0, 0, 3, 0, 55]; for (var i = arr.length-1; i >= 0; i--) { if (arr[i] == 0) { arr.splice(i, 1); } } console.log(arr);
方法四:强烈推荐
var arr = [3, 7, 11, 0, 0, 0, 3, 0, 55] for (var i = 0; i < arr.length; i++) { if (arr[i] == 0) { arr.splice(i, 1); i--; } } console.log(arr);
分类:
js
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
2019-09-27 css3
2019-09-27 css样式
2019-09-27 css选择器
2019-09-27 JS用法