实现JS数组原生方法中 push、pop、unshift、shift 的功能

JavaScript7 个月前3526

一、push方法的实现

分析push的功能:向数组中添加接受的参数,可接受不同的数据类型,也可以接受多个参数,且返回最终数组的长度

Array.prototype.push = function () {
    var argLength = arguments.length;
    var arrLength = this.length;
    for (var i = 0; i < argLength; i++) {
      this[arrLength + i] = arguments[i];
    }
    return this.length;
  };

二、pop方法的实现

分析pop的功能:删除数组的最后一位,且返回删除的值

Array.prototype.pop = function () {
    var arrLength = this.length;
    var deleteObj = this[arrLength - 1];
    this.length = arrLength - 1;
    return deleteObj;
  };

三、unshift方法的实现

分析unshift的功能:在数组第一位前加入新的项,可以传入多个参数,且可以是不同类型,且返回最终数组的长度

Array.prototype.unshift = function () {
    var argulength = arguments.length;
    var arrLength = this.length;
    for (var i = arrLength; i >= 0; i--) { //这里必须倒着赋值,因为顺着如果arguments的长度小于原数组的长度,那么会覆盖原数组的数据
      this[i + argulength - 1] = this[i - 1]
    }
    for (var i = 0; i < argulength; i++) {
      this[i] = arguments[i]
    }
    return this.length;
  };

四、shift方法的实现

分析shift的功能:删除数组的第一项,并返回被删除的值

Array.prototype.shift = function () {
    var arrLength = this.length;
    var deleteObj = this[0];
    for (var i = 0; i < arrLength; i++) {
      this[i] = this[i + 1];
    }
    this.length -= 1;
    return deleteObj;
  };
1 条评论

    还有吗 

    1