[JS]应用splice删除多元素时出现的坑
2024-09-23 15:46:09
-------------------------------------------------------------------------------------
先看一个片段:
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++;
}
原理是我们缩减索引值,来达到和要删除元素的索引对上的目的。
Link:http://www.cnblogs.com/farwish/p/5204370.html
最新文章
- @RenderSection,@RenderPage,@RenderBody介绍
- 用jdbc访问大段文本数据
- 跨语言和跨编译器的那些坑(CPython vs IronPython)
- 【EXCEL】冻结窗口的设置
- An unknown Subversion error occurred. (code = 155037)
- Global Alignment(全局比对)--从算法(Needleman-Wunsch)到python实现
- Codeforces Beta Round #12 (Div 2 Only) D. Ball sort/map
- D&;F学数据结构系列——红黑树
- 第四节 使用XML
- 关于全局变量和函数,在其他类中调用问题,extern关键字
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——NAND 启动
- 配置supervisor 让laraver的队列实现守护进程
- iOS 计算两个坐标之间的距离
- 灵感闪现 篇 (一) 2d场景 3d 效果
- HDU 3783 ZOJ
- AIX smit下创建逻辑卷、添加文件系统并挂载
- kubernetes nginx ingress 使用记录
- java设计模式-----11、代理模式
- jQuery.parseJSON()函数详解
- PHP 【五】