JS删除数组元素
删除数组中连续的元素时,可以使用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