文章测试——手写Splice
大体思路:在原数组从start
位置为remains
数组让出等同空间,即剩余元素往后移动,然后将remians
填充到原数组中去。
Array.prototype.mySplice = function (start, count, ...remains) {
let arr = this
// [0, 1, |2, 3|, 4, 5]
// 先为remain让出足够的空间
// offset:除了count,还需要移动多少位
let offset = remains.length - count
// 往后移动,所以是从后往前遍历,否则会被覆盖
let len = arr.length
for (let i = len - 1; i >= start + count; --i) {
arr[i + offset] = arr[i]
}
// 再填充到数组里面
for (let i = 0; i < remains.length; ++i) {
arr[i + start] = remains[i]
}
return arr
}
简单的手写reduce
Array.prototype.myReduce = function (fn, pre) {
// 提供pre就从0开始,否则从1开始
for (let i = pre ? 0: 1; i < this.length; ++i) {
pre = fn(pre || this[0], this[i], i)
}
return pre
}