一个菜鸟的互联网技术分享博客
您的位置: 主页 > splice()方法删除数组中不连续的几项
advertisement

splice()方法删除数组中不连续的几项

1、正常情况下,用splice方法删除数组的某一项,完全可以
例如:

  1. var arr=['内马尔','C罗','梅西','伊布','范佩西'];  
  2. for(let i=0;i<arr.length;i++){  
  3.     //只删除一项时:梅西  
  4.     if(arr[i] == '梅西'){  
  5.         arr.splice(i,1);  
  6.     }  
  7. }  
  8. console.log(arr);  


 

2、那么问题来了:如果现在要删除‘内马尔’+‘梅西’+‘伊布’呢?

如果继续使用splice方法,多加一个判断而已

  1. var arr=['内马尔','C罗','梅西','伊布','范佩西'];  
  2. for(let i=0;i<arr.length;i++){  
  3.     //删除不连续多项时:内马尔+伊布+梅西  
  4.     if(arr[i] == '内马尔' || arr[i] == '梅西' || arr[i] == '伊布'){  
  5.         arr.splice(i,1);  
  6.     }  
  7. }  
  8. console.log(arr);  

Duang!删错了

3、问题分析,改进方法

因为上面每一个if判断中执行splice()后,原数组变化,原数组的中每一项的下标是会改变的哦

所以再用splice()方法就会出错!直接每次执行splice()后,i--就可以了

  1. var arr=['内马尔','C罗','梅西','伊布','范佩西'];  
  2. for(let i=0;i<arr.length;i++){  
  3.     //删除不连续多项时:内马尔+伊布+梅西  
  4.     if(arr[i] == '内马尔' || arr[i] == '梅西' || arr[i] == '伊布'){  
  5.         arr.splice(i,1);  
  6.         i--;  
  7.     }  
  8. }  
  9. console.log(arr);  

4、或者使用lodash的方法
过滤数组

_.difference([1,2,3,4],[2,4])//返回[1,3]

zhangren.online
上一篇:js获取一个对象的长度
下一篇:javascript小数乘法精确率填坑

您可能喜欢

​canvas作图

​canvas作图

​javascript小数乘法精确率填坑

​javascript小数乘法精确率填坑

​boostrap之模态框取消按钮事件

​boostrap之模态框取消按钮事件

​使input文本框不可编辑的3种方法

​使input文本框不可编辑的3种方法

回到顶部