本文主要跟大家分享了关于Javascript循环删除数组中元素的几种方法,分享出来供大家参考学习,下面与微点阅读小编一起来看看详细的介绍:

问题

大家在码代码的过程中,经常会遇到在循环中移除指定元素的需求。按照常规的思路,直接一个for循环,然后在循环里面来个if判断,在判断中删除掉指定元素即可。但是实际情况往往不会像预想的那样顺利运行。

下面以一段Javascript代码为例演示这一过程。

1

2

3

4

5

6

7

8

9

10

11

12

13

(function () {

 var arr = [1,2,2,3,4,5];

 var len = arr.length;

 for(var i=0;i<len;i++){

 //打印数组中的情况,便于跟踪数组中数据的变化

 console.log(i+"="+arr[i]);

 //删除掉所有为2的元素

 if(arr[i]==2){

  arr.splice(i,1);

 }

 }

 console.log(arr);

})();

运行结果如下:

从最终的结果可以看到实际上只删除掉了匹配的其中一个元素,而另外一个元素还存在。

从打印出的运行过程不难发现,原因为当删除掉了一个元素后,数组的索引发生的变化,造成了程序的异常。

解决方法

找到了问题的原因,就不难解决问题了。

方法一

1

2

3

4

5

6

7

8

9

10

11

12

13

14

(function () {

 var arr = [1,2,2,3,4,5];

 var len = arr.length;

 for(var i=0;i<len;i++){

 //打印数组中的情况,便于跟踪数组中数据的变化

 console.log(i+"="+arr[i]);

 //删除掉所有为2的元素

 if(arr[i]==2){

  //注意对比这行代码:删除元素后调整i的值

  arr.splice(i--,1);

 }

 }

 console.log(arr);

})();

上面的代码看起来不大好理解,有没有看起来更易于理解的代码呢?

请看下面

方法二

1

2

3

4

5

6

7

8

9

10

11

12

(function () {

 var arr = [1,2,2,3,4,5];

 var len = arr.length-1;

 //start from the top

 for(var i=len;i>=0;i--){

 console.log(i+"="+arr[i]);

 if(arr[i]==2){

  arr.splice(i,1);

 }

 }

 console.log(arr);

})();

从后往前遍历可以有效解决问题,也容易理解,那么还有没有跟简洁的实现呢?

接着看下面代码

方法三

1

2

3

4

5

6

7

8

9

10

11

(function () {

 var arr = [1,2,2,3,4,5];

 var i = arr.length;

 while(i--){

 console.log(i+"="+arr[i]);

 if(arr[i]==2){

  arr.splice(i,1);

 }

 }

 console.log(arr);

})();

使用while(i--) ,i为数组下标,个人觉得这是最简洁、高效的代码实现了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助。

来源:https://www.weidianyuedu.com

Javascript循环删除数组中元素的3种方法相关推荐

  1. [转]在python中删除list中元素的3种方法:remove、pop、del

    info = ["du", 18, "男", "矮穷丑", ["高", "富", "帅&q ...

  2. Java中使用for循环删除数组中某个元素,并按原有顺序打印

    package com.ty.demo; //使用for循环删除数组中的某个元素,并按照原有顺序打印出来 public class Demo03 { public static void main(S ...

  3. javascript比较删除数组头元素的不同方法的效率

    javascript比较删除数组头元素的不同方法的效率 Array.prototype.shift() 删除并返回数组的第一个元素 我搜索的实现是,创建一个新数组,然后对从i=1开始,对新数组的i-1 ...

  4. java 数组减除值_java – 删除数组中空值的最有效方法是什么.

    我很好奇删除数组中空值的最有效方法是什么.这是我当前的null(0)删除方法. public static int[] removeNull(int[] array){ int j = 0; for( ...

  5. Jquery取得iframe中元素的几种方法Javascript Jquery获取Iframe的元素、内容或者ID,反之也行!...

    query取得iframe中元素的几种方法 在iframe子页面获取父页面元素 代码如下: $('#objId', parent.document); // 搞定... 在父页面 获取iframe子页 ...

  6. 图解|查找数组中最大值的5种方法!

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 我们在一些特定场景下,例如查询公司员工的最高薪资,以及班级的最高成绩又或者是面试中 ...

  7. 解析Jquery取得iframe中元素的几种方法

    iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作,需要的朋友可以参考下 DOM方法:父窗口操作IFRAME:window.frames[&quo ...

  8. Jquery取得iframe中元素的几种方法(转载)

    Jquery取得iframe中元素的几种方法(转载) iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作 DOM方法: 父窗口操作IFRAME: ...

  9. php js动态删除数组元素,javascript如何删除数组中的指定元素

    js删除数组中的指定元素主要分为两步,首先判断数组中是否包含这个元素,然后再通过splice()方法来删除指定元素 本篇文章主要介绍的是如何通过javascript语言对数组中的指定元素进行删除的方法 ...

最新文章

  1. 详细说说Transformer (超详细图解,一图胜千言)
  2. 陈一舟:在中国当企业家要有承受能力 失败了大家会看你笑话
  3. LTE轻松进阶之帧结构
  4. JAVA总结之数组篇
  5. api key for Alpha Vantage
  6. spring boot+mybatis 多数据源切换
  7. html链接外部css样式表,CSS外部样式表是什么?
  8. 控制反转IOC与依赖注入DI
  9. POJ 3080 Blue Jeans (后缀数组)
  10. JPG,动态GIF,BMP一些常用解决办法
  11. VS2008 vs2010中JQUERY智能提醒
  12. ideal如何快速导入import_【MAC版】pr预设安装目录?pr如何快速批量导入lut
  13. Markdown案例
  14. firstchild.data与childNodes[0].nodeValue意思(转)
  15. VXLAN配置实例(四)——VXLAN多租户网络隔离
  16. SmartSVN 14 for Mac(多平台SVN客户端)
  17. 黑马程序员——农夫过河问题
  18. 多元函数的泰勒展开Talor以及黑塞矩阵
  19. 仪器校准证书和检定证书分别具有什么作用?区别是什么?
  20. js 获取当天23点59分59秒 时间戳 (最简单的方法)

热门文章

  1. php google地图,google地图 标记地图代码
  2. 股票代码与上市公司板块分类
  3. Java 多线程的应用场景
  4. 03.ReactDOM.render
  5. css【详解】grid布局—— 网格布局(栅格布局)
  6. 一分钟学会如何给图片降噪,给图片降噪也可以很简单!
  7. 微信小程序AR扫描识别图(支持多图片)加载3D模型及其动画
  8. 离线安装MySQL缺少libaio.so.1文件——并离线安装libaio.so.1
  9. 移动端js触摸touch详解(附带案例源码)
  10. 后缀名为jnlp的文件的打开方式