欢迎光临
我们一直在努力

JavaScript | 重构数组splice方法

又是一个作业,写了半小时,又改了半小时bug,果然我技术还是不行,以后得多练习。

具体重写思路,都写注释里面了,在这里不多说啦!

//重构splice方法
      //arr 为数组参数,delInx为索引(可以为负),arrNum为要删除的元素个数,后面可以跟需要添加的新元素。
      function splices(arr, delInx, arrNum) {
        //获取需要添加的元素个数(如果有的话)
        var arrArgumentsNum = arguments.length - 3;
        //设置delArr,用于以数组形式返回被删除的元素
        var delArr = [];
        //简单的判断,防止函数调用失败
        if (arr.length <= delInx) return 0;
        if (arrNum < 0) return 0;
        if (~delInx + 1 > arr.length) return 0;
        //如果索引为负,在这里转为正
        if (delInx < 0) {
          delInx = delInx + arr.length;
        }
        //for循环遍历删除元素,后面的元素前移
        for (i = 0; i < arr.length - delInx; i++) {
          if (i < arrNum) delArr[i] = arr[delInx + i];
          arr[delInx + i] = arr[delInx + arrNum + i];
        }
        //删除多余元素
        arr.length -= arrNum;
        //如果需要插入元素,则进行下面操作
        if (arguments[3]) {
          arr.length += arrArgumentsNum;
          //循环让元素后移
          for (i = 0; i < arrArgumentsNum; i++) {
            arr[arr.length - i - 1] = arr[arr.length - arrArgumentsNum - i - 1];
          }
          //添加对应元素
          for (i = 0; i < arrArgumentsNum; i++) {
            arr[delInx + i] = arguments[i + 3];
          }
        }
        return delArr;
      }

测试一下:

//测试
      var arrDemo3 = [1, 2, 3, 4, 5];
      var arrDemo4 = [1, 2, 3, 4, 5];
      var arrDemo5 = [1, 2, 3, 4, 5];
      var arrDemo6 = [1, 2, 3, 4, 5];
      var arrDemo7 = [1, 2, 3, 4, 5];
      var arrDemo8 = [1, 2, 3, 4, 5];
      var arrDemo3Del = splices(arrDemo3, 2, 2);
      var arrDemo4Del = splices(arrDemo4, -2, 1);
      var arrDemo5Del = splices(arrDemo5, 2, 2, 1, 2);
      var arrDemo6Del = splices(arrDemo6, -2, 1, "a");
      var arrDemo7Del = splices(arrDemo7, 2, 2, "a", "b", "c");
      var arrDemo8Del = splices(arrDemo8, -2, 1, "a", "b", "c", "d");
      console.log("splices测试!");
      console.log(arrDemo3, arrDemo3Del);
      console.log(arrDemo4, arrDemo4Del);
      console.log(arrDemo5, arrDemo5Del);
      console.log(arrDemo6, arrDemo6Del);
      console.log(arrDemo7, arrDemo7Del);
      console.log(arrDemo8, arrDemo8Del);

查看输出:

赞(2) 打赏
未经允许不得转载:散人研 » JavaScript | 重构数组splice方法
分享到: 更多 (0)

评论 2

1 + 7 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    佩服佩服,回顾js时看到的此站。很坚持。 :qiang:

    helloWorld 3周前 (11-10) 来自天朝的朋友 谷歌浏览器 Windows 10 回复

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏