刪除數組中連續的元素時,可以使用slice或者splice方法,splice時需要註意會修改原數組。 1.slice(start,end):方法可從已有數組中返回選定的元素,返回一個新數組,包含從start到end(不包含該元素)的數組元素。(不改變原數組) start參數:如果不指定,那麼從0開始 ...
刪除數組中連續的元素時,可以使用slice或者splice方法,splice時需要註意會修改原數組。
1.slice(start,end):方法可從已有數組中返回選定的元素,返回一個新數組,包含從start到end(不包含該元素)的數組元素。(不改變原數組)
- start參數:如果不指定,那麼從0開始。如果為負數,規定從數組尾部算起的位置,-1是指最後一個元素。
- end參數:如果不指定,那麼切分的數組包含從start到數組結束的所有元素。如果為負數,規定從數組尾部算起的位置,-1是指最後一個元素。
var arr = [1,2,3,4,5]; console.log(arr.slice(1,-1));//[2,3,4] console.log(arr);//[1,2,3,4,5]
2.splice(index,howmany,item1,...itemX):該方法向或者從數組中添加或者刪除項目,返回被刪除的元素。(會改變原數組)
- index參數:規定添加或者刪除的位置。如果不指定,那麼從0開始。如果為負數,規定從數組尾部算起的位置,-1是指最後一個元素。
- howmany參數:要刪除的數量,不指定時,刪除index後的所有元素。如果為0,則不刪除項目。
- tem1,...itemX參數:可選,向數組添加的新元素。
var arr = [1,2,3,4,5]; console.log(arr.splice(2,2,"hello"));//[3,4] console.log(arr);//[1, 2, "hello", 5] 改變了原數組
刪除數組中不連續的元素時,可以自己寫函數實現:
1:filter
function remove(arr, item) { return arr.filter(function(cur,index,src){ if($.isArray(item)){ if($.inArray(cur, item) != -1){ return false } }else{ if(cur === item){ return false } } return true }) } var arr = [1,2,3,4,5]; console.log(remove(arr,[1,2]));//[3,4,5] console.log(arr);//[1,2,3,4,5]
2:push
function remove(arr, item) { var tempArr = []; $.each(arr, function(i,cur){ if($.isArray(item)){ if($.inArray(cur, item) == -1){ tempArr.push(cur) } }else{ if(cur != item){ tempArr.push(cur) } } }) return tempArr } var arr = [1,2,3,4,5]; console.log(remove(arr,[1,2]));//[3,4,5] console.log(arr);//[1,2,3,4,5]
3:splice
function remove(arr, item) { var newarr = arr.slice(0); for(var i=0;i<newarr.length;i++){ if($.isArray(item)){ if($.inArray(newarr[i], item) != -1){ newarr.splice(i,1); i--; } }else{ if(newarr[i] == item){ newarr.splice(i,1); i--; } } } return newarr; } var arr = [1,2,3,4,5]; console.log(remove(arr,[1,2]));//[3,4,5] console.log(arr);//[1,2,3,4,5]
參考文獻:
https://blog.csdn.net/xiaoqingpang/article/details/79108005
https://blog.csdn.net/qq_31325079/article/details/85758276