-------------------------------------------------------------------------------------

先看一个片段:

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

最新文章

  1. @RenderSection,@RenderPage,@RenderBody介绍
  2. 用jdbc访问大段文本数据
  3. 跨语言和跨编译器的那些坑(CPython vs IronPython)
  4. 【EXCEL】冻结窗口的设置
  5. An unknown Subversion error occurred. (code = 155037)
  6. Global Alignment(全局比对)--从算法(Needleman-Wunsch)到python实现
  7. Codeforces Beta Round #12 (Div 2 Only) D. Ball sort/map
  8. D&F学数据结构系列——红黑树
  9. 第四节 使用XML
  10. 关于全局变量和函数,在其他类中调用问题,extern关键字
  11. tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——NAND 启动
  12. 配置supervisor 让laraver的队列实现守护进程
  13. iOS 计算两个坐标之间的距离
  14. 灵感闪现 篇 (一) 2d场景 3d 效果
  15. HDU 3783 ZOJ
  16. AIX smit下创建逻辑卷、添加文件系统并挂载
  17. kubernetes nginx ingress 使用记录
  18. java设计模式-----11、代理模式
  19. jQuery.parseJSON()函数详解
  20. PHP 【五】

热门文章

  1. smarty3与2的差异导致的小问题
  2. 写了一个自动打包并发布到tomcat的脚本
  3. string引用类型解惑
  4. Aspose.Cells 设置背景颜色
  5. 根据 MySQL 状态优化 ---- 3. key_buffer_size
  6. Chap2: question: 1 - 10
  7. windows下使用VS2010编译jpeglib
  8. ubuntu 12.04 设置代理
  9. linux文件上传
  10. 【Python】python2.7安装pysvn