Appearance
Array.prototype.pop
- 没有参数
- 返回值是删除的元素,数组为空时返回undefined
- pop方法根据length属性来确定最后一个元素的位置,如果不包含length属性或length属性不能被转为一个数值,会将length置为0,并返回undefined
- 具有通用性,可用于类数组对象
- 改变数组长度
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
- 删除数组头部第一个元素
- 无参数
- 返回删除的元素,如果数组为空则返回undefined
- 改变数组长度
- shift方法将移除索引为0的元素,并返回被移除的元素,其它元素的索引值随之减1。如果length属性的值为0,则返回undefined
- 具有通用性
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
- 无参数。
- 返回颠倒之后的原数组。
- 通用性,可以提供给类数组对象使用。
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
}