原生push unshift pop shift方法的实现

1.push的实现

push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

var arr = [1,2,3,4];
arr.push(7,8,9,10); //返回值8
console.log(arr) //[1,2,3,4,7,8,9,10]

通过上面对push的说明以及应用,下面我们来实现我们的myPush吧

Array.prototype.myPush = function () {
    for (var i = 0; i < arguments.length; i++) {
        this[this.length] = arguments[i]; //添加完数组了
    }
    return this.length //返回数组添加完的长度
}

关键点:循环遍历 使用最原生的方法进行数组的继续添加 this[this.length] = arguments[i];
下面进行测试

var arr = [1,2,3,4];
arr.myPush(7,8,9,10); //返回值8
console.log(arr) //[1,2,3,4,7,8,9,10]

2.unshift的实现

unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

var arr = [1,2,3,4];
arr.unshift(7,8,9,10); //返回值8
console.log(arr) //[7,8,9,10,1,2,3,4]

通过上面对unshift的说明以及应用,下面我们来实现我们的myUnshift吧

Array.prototype.myUnshift = function () {
    var newArray = [...arguments, ...this];
    //长度也要变化
    this.length = newArray.length;
    //可以改变数组
    for (var i = 0; i < newArray.length; i++) {
        this[i] = newArray[i]
    }
    return this.length;
}

关键点:使用Es6的扩展运算符加入一个新的数组,然后循环遍历对数组进行全新改变
下面进行测试

var arr = [1,2,3,4];
arr.myUnshift(7,8,9,10); //返回值8
console.log(arr) //[7,8,9,10,1,2,3,4]

3.pop的实现

pop() 方法用于删除数组的最后一个元素并返回删除的元素。

var arr = [1,2,3,4];
arr.pop();  //4
console.log(arr) //[1,2,3]

通过上面对pop的说明以及应用,下面我们来实现我们的myPop吧

Array.prototype.myPop = function () {
    //获取最后一个值
    var last = this[this.length - 1];
    this.length--; //删除最后元素
    return last; //返回最后一个值
}

关键点:获取到最后一个值,然后使 this.length--(长度减少即删除元素)
下面进行测试

var arr= [1,2,3,4];
arr.myPop();  //4
console.log(arr)  //[1,2,3]

4.shift的实现

shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

var arr = [1,2,3,4];
arr.shift(); //1
arr //[2,3,4]

通过上面对shift的说明以及应用,下面我们来实现我们的myShift吧

Array.prototype.myShift = function () {
    //获取第一个元素
    var first = this[0];
    // 循环往前替代
    for (var i = 1; i <= this.length; i++) {
        this[i - 1] = this[i] //往前替代
    }
    //长度减1
    this.length--;
    //返回第一个值
    return first
}

关键点:获取第一个元素,用以返回 ,然后循环往前替代,把第一个替换掉
下面进行测试

var arr = [1,2,3,4];
arr.myShift(); //1
console.log(arr) //[2,3,4]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值