Durch das Entfernen von Splice werden das Array und die Indizes ständig verändert, sodass die Indizes, an die ich mich zuvor erinnerte, nutzlos sind.
先删除下标大的再删除下标小的
把数组换成对象,使用delete方法删除,下标就不会变了
数组的map方法 剔除指定的索引位置的元素 新生成一个数组
或者直接filter方法
可以试一下,新建一个新的数组,然后循环你要做修改的那个数组,如果下标不是你要删的那个数,那就把这个位置上的元素push到你的新的数组里,如果下标是你要删的那个数,直接continue跳出循环这样循环结束之后,新的数组就是你需要的数组,再把它赋值给旧数组就好了
生成新数组的话:
arr = [1,2,3,4,5,6,7] removes = [1,3,5] arr = arr.filter(function(value, index) { return removes.indexOf(index) < 0 });
不生成新数组:
arr = [1,2,3,4,5,6,7] removes = [1,3,5] Array.prototype.remove = function(removes){ removes.sort(function(a, b) { return a - b; }).reverse().forEach(function(value){this.splice(value, 1) }.bind(this) )}; arr.remove(removes)
先删除下标大的再删除下标小的
把数组换成对象,使用delete方法删除,下标就不会变了
数组的map方法 剔除指定的索引位置的元素 新生成一个数组
或者直接filter方法
可以试一下,新建一个新的数组,然后循环你要做修改的那个数组,如果下标不是你要删的那个数,那就把这个位置上的元素push到你的新的数组里,如果下标是你要删的那个数,直接continue跳出循环
这样循环结束之后,新的数组就是你需要的数组,再把它赋值给旧数组就好了
生成新数组的话:
不生成新数组: