数组的删除splice

数组的删除splice

  • splice 是删除数组中的某些内容,按照数组的索引来删除

  • splice改变原数组,其返回值构成的新数组是原数组不要的值

  • 语法: splice(从哪一个索引位置开始,删除个数,添加的元素(可以多个)) (第三个参数可以不写,也可以替换一个或者多个内容,多个内容使用逗号间隔)

  • 第一个参数可以写负数,代表从倒数第几个开始删除

  • 若删除0个然后添加,则是在参数1,前面添加,不然是在参数1后面添加

// 定义数组
var arr = [1, 2, 3, 4, 5, 6]
//返回的元素构成新数组,无引用关系


var a=arr.splice(10)//起始值大于长度不删除
       console.log(arr,a);//(6)[1, 2, 3, 4,5,6]   []

var a=arr.splice(1,'a')//删除几个元素是NaN,相当于删除0个
       console.log(arr,a);//(6)[1, 2, 3, 4,5,6]   []

    
    var arr1=arr.splice(-10)//开始值是负数时,并且大于等于数组长度,相当于从0开始
   console.log(arr1, arr);//[]  (6)[1,2,3,4,5,6]    []


        var a=arr.splice("a")//NAN
       console.log(arr,a);// []   [1,2,3,4,5,6]

var arr1 = arr.splice(2, 2, 0, -1)//删除并替换
 console.log(arr1, arr);// (2)[3,4]  (6) [1,2,0,-1,5,6]

var arr1=arr.splice()//因为原数组没有不要的值,返回值是一个空数组
  console.log(arr1, arr);// []  (6) [1,2,3,4,5,6]

  var arr1=arr.splice(0)//原数组中所有的元素删除,放在新数组中,清空原数组
   console.log(arr1, arr);// (6) [1,2,3,4,5,6]   []

  var arr1=arr.splice(1)//从下标为1,清除到数组尾部
   console.log(arr1, arr);// (5) [2,3,4,5,6]   [1]

  var arr1=arr.splice(-2)//从倒数第2项,清除到数组尾部
   console.log(arr1, arr);//(2)[5,6]   (4)[1,2,3,4]

  var arr1=arr.splice(-2,1)//从倒数第2项,清除1个
   console.log(arr1, arr);//[5]   (4)[1,2,3,4,6]

  var arr1=arr.splice(1,2)//从下标为1,删除两个元素
   console.log(arr1, arr);//(2)[2,3]  (4)[1,4,5,6]

   var arr1=arr.splice(1,0,9)//在下标为1前,插入一个数字9
   console.log(arr1, arr);// []   (7)[1,9,2,3,4,5,6]

  var arr1=arr.splice(-1,0,9)//在倒数第一前,插入一个数字9
   console.log(arr1, arr);// []   (7)[1,2,3,4,5,9,6]

  var arr1=arr.splice(0,0,9)//在下标为0前,插入一个数字9
   console.log(arr1, arr);// []   (7)[9,1,2,3,4,5,6]


 var arr1=arr.splice(1,-2)//删除个数为负数时不删除
   console.log(arr1, arr);//[]  (6)[1,2,3,4,5,6]

        var arr1=arr.splice(0,7)//删除个数大于数组长度,删除到最后
   console.log(arr1, arr);//[]  (6)[1,2,3,4,5,6]    []


//splice重构
function array_splice(arr, start, deleteCount) {
            var arr1 = []
            if (arr == undefined || arr.constructor !== Array)
                throw new Error("参数错误")
            if (start === undefined) return []
            start = Number(start)
            if (isNaN(start)) start = 0
            if (start < 0) start = (start + arr.length) > 0 ? (start + arr.length) : 0;
            if (start > arr.length) start = arr.length;
            if (deleteCount === undefined) deleteCount = arr.length - start;
            deleteCount = Number(deleteCount);
            if (isNaN(deleteCount)) deleteCount = 0;
            if (deleteCount < 0) return arr1;
            if (deleteCount + start > arr.length) deleteCount = arr.length - start;
            for (var i = start; i < arr.length; i++) {
                if (i < deleteCount + start) {arr1[arr1.length] = arr[i];  }
                arr[i] = arr[i + deleteCount]
                
            }
            arr.length -= deleteCount;
            //新增  
            var len = arguments.length - 3;
            var l = arr.length += len;//L是新增后数组的长度  假如新增3个那就是9
            while (l > start) {  
                if (l > start + len) arr[l - 1] = arr[l - len - 1];           
                else {
                    arr[l - 1] = arguments[3 + (l - 1 - start)];
                }
                l--;
            }
            return arr1
        }
        var arr = [1, 2, 3, 4, 5, 6]

        var arr1 = array_splice(arr, 3,2, -1, -2, -3)
        console.log(arr, arr1);
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不道归来`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值