[JS] 应用splice删除多元素时出现的坑
2023-09-14 09:02:29 时间
先看一个片段:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.splice(2,2); # Banana,Orange
上面两行代码完全没有问题,能达到我们想要的效果。
假如变成了下面这种情况:
var origin=["aa","bb","cc","dd"]; var has = ["bb", "cc"]; var _index = []; for (i in origin) { # 这里或者使用for..in,不是重点 if ($.inArray(origin[i], has) != -1) { _index.push(i); } } # 重点来了 for (j in _index) { origin.splice(_index[j], 1); } console.log(origin); # 现在会输出我们想要的结果 ["aa", "dd"] 吗?
运行一下,我们看到了不是我们想要的结果,原因是执行一次splice,原数组就被更改过了,索引数组的索引重新排列整齐,这样我们记录的老的排列索引就对不上了。
原来是这样。
那么我们现在需要修改一下重点splice部分的代码:
var k = 0; for (j in _index) { origin.splice(_index[j] - k, 1); k++; }
原理是我们缩减索引值,来达到和要删除元素的索引对上的目的。
Refer:JS_splice的坑
相关文章
- js判断元素在不在数组中_js判断数组是否为空
- 不用React Vue,只用原生JS,如何开发单页面应用?
- 使用 Dapr JS SDK 让 Nest.js 集成 Dapr(微软开源的分布式应用程序运行时)
- Node.js 应用访问 https 服务器时遇到的错误消息 unable to get local issuer certificate
- JS获取当前年份_js获取当前时间年月日
- js 实现元素拖拽
- js 数组去除重复数据-当WPS开始像支持VBA一样支持JS语言时,微软又该何去何从?
- JS代码之还原
- 【JS 逆向百例】猿人学系列 web 比赛第二题:js 混淆 - 动态 cookie,详细剖析
- JS_SDK实现网站应用QQ登录功能-QQ互联(源码版)
- clipboard.js:最轻便的复制页面内容到剪切板的JS
- 漂亮的Js拖动层,窗口拖拽详解编程语言
- JS实现逼真的雪花飘落特效详解编程语言
- JS的应用场景
- Linux上的JS压缩工具(js压缩工具linux)
- 使用 JS 操作 Redis:实现强大数据存储.(js调用redis)
- 使用JS控制Oracle数据库的更新(js控制oracle更新)
- JS在Oracle中的应用(js如何oracle)
- JavaScript探索之旅掌握Oracle和JS的完美融合(js与oracle)
- JS将文件传输至MySQL数据库(.js传文件至mysql)
- 从前端JS里请求Redis资源,搭建高性能应用(前端js请求redis)
- JS脚本混淆、加密讨论
- js获取提交的字符串的字节数
- asp.net下利用js实现返回上一页的实现方法小集
- js对象之JS入门之Array对象操作小结
- 灵活应用js调试技巧解决样式问题的步骤分享
- js随机颜色代码的多种实现方式
- js获取url参数代码实例分享(JS操作URL)
- js网页实时倒计时精确到秒级
- jquery库或JS文件在eclipse下报错问题解决方法
- node.js应用后台守护进程管理器Forever安装和使用实例
- js中confirm实现执行操作前弹出确认框的方法
- node.js开发中使用NodeSupervisor实现监测文件修改并自动重启应用
- JS实现仿京东淘宝竖排二级导航
- node.js中的console.dir方法使用说明
- 教你在heroku云平台上部署Node.js应用