目录
1、push(尾部添加)
push 在数组最后一位添加一个或多个元素,并返回新数组的长度,改变原数组.
Array.prototype.myPush = function () {
for (let i = 0; i < arguments.length; i++) {
this[this.length] = arguments[i]
}
return this.length
}
let arr = [1, 2, 3]
arr.myPush(4)
console.log(arr)
2、pop(尾部删除)
// pop 删除数组的最后一位,并且返回删除的数据,会改变原来的数组
Array.prototype.myPop = function () {
let arr = this
if (arr.length <= 0) return undefined
let num = arr[this.length - 1]
this.length = this.length - 1
return num
}
let arr = [1, 3, 5]
let res = arr.myPop()
console.log(res, arr)
3、unshift(头部添加)
unshift 在数组第一位添加元素,并返回新数组的长度,改变原数组
Array.prototype.myunshift = function () {
let arrlg = this.length
let arr = this
因为数组从0开始的所以需要总长度减去1
for (let i = arrlg + arguments.length - 1; i >= 0; i--) {
if (i > arguments.length - 1) {
arr[i] = arr[i - arguments.length]
} else {
arr[i] = arguments[i]
}
}
return this.length
}
let arr = [1, 4, 6, 9]
arr.myunshift(1)
4、shift(头部删除)
shift 删除并返回数组的第一个元素。
Array.prototype.myshift = function () {
let arr = this
if (arr.length == 0) return undefined
let num = arr[0]
for (let i = 1; i < arr.length; i++) {
arr[i] = arr[i + 1]
}
this.length = this.length - 1
return num
}
let arr = [1, 4, 6]
let res = arr.shift()
console.log(res, arr)
5、reverse(数组顺序倒置)
reverse 将数组的数据进行反转,并且返回反转后的数组,会改变原数组
Array.prototype.myreverse = function () {
let arr = this
let arr1 = Array.from(arr)//把数组复制一次
for (let i = 0; i < arr.length; i++) {
arr[arr.length - i - 1] = arr1[i]
}
return arr
}
let arr = [1, 4, 5, 8]
let res = arr.myreverse()
console.log(res)
6、splice
Array.prototype.splice = function(start, n, ...args) {
let ret = []
// 左移
for (let i = start; i < this.length; i++) {
if (i < start + n) {
ret.push(this[i])
}
this[i] = this[i + n]
}
// 删除多余长度
for (let i = 0; i < n; i++) {
this.pop()
}
// 剩余参数
if (args.length) {
let len = this.length
// 右移
for (let i = start; i < len; i++) {
this[i + args.length] = this[i]
}
// 替换插入值
for (let i = 0; i < args.length; i++) {
this[i + start] = args[i]
}
}
return ret
}