splice移除會一直更換數組,更換下標,所以我之前記住的下標沒用。
先刪除下標大的再刪除下標小的
把陣列換成對象,使用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跳出循環
這樣循環結束之後,新的數組就是你需要的數組,再把它賦值給舊數組就好了
產生新數組的話:
不產生新數組: