Skip to content

Array.prototype.pop

  1. 没有参数
  2. 返回值是删除的元素,数组为空时返回undefined
  3. pop方法根据length属性来确定最后一个元素的位置,如果不包含length属性或length属性不能被转为一个数值,会将length置为0,并返回undefined
  4. 具有通用性,可用于类数组对象
  5. 改变数组长度
js
Array.prototype.myPop = function () {
    if (this.length > 0 && this.length) {
        // 获取数组的最后一位
        var lastElem = this[this.length - 1]
        // 利用length属性删除数组元素
        this.length -= 1
        return lastElem
    }
    return undefined
}

Array.prototype.shift

  1. 删除数组头部第一个元素
  2. 无参数
  3. 返回删除的元素,如果数组为空则返回undefined
  4. 改变数组长度
  5. shift方法将移除索引为0的元素,并返回被移除的元素,其它元素的索引值随之减1。如果length属性的值为0,则返回undefined
  6. 具有通用性
js
Array.prototype.myShift = function () {
    if (this.length >= 0 && this.length) {
        var firstElem = this[0]
        for (var key in this) {
            if (this.hasOwnProperty(key) && key > 0) {
                this[key - 1] = this[key]
            }
        }
        this.length -= 1
        return firstElem
    }
    return undefined
}

Array.prototype.reverse

  1. 无参数。
  2. 返回颠倒之后的原数组。
  3. 通用性,可以提供给类数组对象使用。
js
Array.prototype.myReverse = function () {
    // 保存this指向
    var origin = this,
        // 保存原数组的长度
        originLen = origin.length,
        // 浮标
        index = originLen - 1,
        // 工具变量
        temp = null
    for (var i = 0; i < Math.ceil(originLen / 2); i++) {
        // 两个元素相互交换位置,利用ES6中的解构赋值
        ;[origin[i], origin[index]] = [origin[index], origin[i]]
        // 移动浮标
        index--
    }
    return origin
}