Array.prototype.mySplice = function () {
let arr = this;
// 传入的参数
let parms = […arguments]
// 下标
let cur = […arguments][0]
// 要删除的个数,如果有要删除的个数,就取个数,否则取长度
let index = parms.length >= 2 ? parms[1] : arr.length
// 要插入的参数
let args = parms.length > 2 ? parms.slice(2) : ‘’
let newArr = [], oldArr = []
point = 0, pointF = 0;
while (point < arr.length) {
// 这里用来判断是否有需要删除的个数
if (point >= cur && point <= (cur + index - 1)) {
newArr.push(arr[point])
// 如果有要插入的数据那么要插入进原始数组
if (args.length > 0) {
oldArr.push(args[pointF])
pointF += 1
}
} else {
debugger
oldArr.push(arr[point])
}
point += 1
}
// 改变原来数组
this.length = 0
for (let i = 0; i < oldArr.length; i++) {
this[i] = oldArr[i]
}
// this=oldArr //这样不行,报错,为什么
return newArr
}
var aaa1 = [2, 1, 34, 4]
let cc = aaa1.mySplice(1, 2, 66, 77)
自己写的,如有错误,望各位指正,当直接用 this=oldArr 的时候会报错,不知道是什么,但是遍历赋值就可以