欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS删除数组元素

程序员文章站 2022-04-01 18:02:48
删除数组中连续的元素时,可以使用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]

 

参考文献: