我们利用splice进行删除操作 ----------数组.splice(下标,长度)
var arr = [2, 3, 5, 7];
var arrdelete=[1,3]; //要删除arr里面的下标是1,3的内容。最后得到的是[2,5]
for (let i = 0; i <arrdelete.length; i++) {
arr.splice(arrdelete[i], 1);
}
结果却是
我们发现下标是1的被删除了。下标3的内容却没有被删除。
那是因为循环的时候删除了第一个元素即下标为1 的内容之后arr就变成了[3,5,7]这个时候你再去找他的下标为3 的内容是时候是找不到的。这个splice删除的是下标。而数字小的下标被删了整体的下标就会改变。
解决的办法就是:
从数组的后面往前面循环。先删除下标3的元素。再去找下标1的元素。
因为删除了下标大的也不会改变整体数组的其他内容的下标
var arr = [2, 3, 5, 7];
var arrdelete=[1,3]; //要删除arr里面的下标是1,3的内容。最后得到的是[2,5]
for (let i = arrdelete.length-1; i >=0; i--) {
arr.splice(arrdelete[i], 1);
}