网站建设在线建站,大连seo推广优化,道路建设网站,做app网站有哪些在我们日常敲代码的时候#xff0c;常常会用到splice()方法来删除数组中的元素(就是以截取的方式)#xff0c;因为它会直接对数组进行修改。在使用splice之前#xff0c;必备条件是#xff0c;要先有一个数组。var arr new Array(1,2,3,4,5); // 初始化一个数组var delete…在我们日常敲代码的时候常常会用到splice()方法来删除数组中的元素(就是以截取的方式)因为它会直接对数组进行修改。在使用splice之前必备条件是要先有一个数组。var arr new Array(1,2,3,4,5); // 初始化一个数组var deleteNumber 3; // 要删除的元素// 遍历数组for(var i0; i arr.length; i){if(arr[i] deleteNumber){ // 如果和要删除的元素相等var num arr.splice(i,1);console.log(成功删除 num)} else {console.log(arr[i] 未被删除)}}可以看到3已经被成功删除但是4跑哪去了呢前面说过splice 是直接操作并修改数组的所以当找到数字3时在循环中的 i 下标是2而当删除数字3后数组下标 i 位置中保存的数字变为了数字4然后到了下一个循环 i 下标为3时数组下标 i 位置中保存的数字是5所以跳过了数字4于是调试信息中没有可爱的数字4。。。原理就是这样子是不是很绕。那怎么解决漏掉了数字4这个问题呢?很简单在使用 splice 的下一句改一下循环变量值即可。。。if(arr[i] deleteNumber){var num arr.splice(i,1); //从i位置开始删除一个数字i i -1; // 解决方案}但是还有一种解决方法就是从后往前遍历但是本人如果没有条件限制的话更喜欢用forEach进行遍历所以 i i -1这种解决方式还是挺方便的。