Array.prototype.forEach
没有返回值 - 参数1:遍历数组时需要执行的回调函数
- 回调函数参数1:数组的每一项 item
- 回调函数参数2:每一项的下标 index
- 回调函数参数3:整个数组 array
- 参数2:这个回调函数的
this
指向
Array.prototype.myForEach = function (callback) {var arr = this,len = arr.length,_self = arguments[1] || window;for (var i = 0; i < len; i++) {callback.apply(_self, [arr[i], i, arr]);}
}
Array.prototype.map
返回回调函数执行之后的返回值组成的新数组 - 参数1:遍历数组时需要执行的回调函数
- 回调函数参数1:数组的每一项 item
- 回调函数参数2:每一项的下标 index
- 回调函数参数3:整个数组 array
- 参数2:这个回调函数的
this
指向
Array.prototype.myMap = function (callback) {var arr = this,len = arr.length,_self = arguments[1] || window,resArr = [];for (var i = 0; i < len; i++) {resArr.push(callback.apply(_self, [arr[i], i, arr]));}return resArr;
}
Array.prototype.filter
筛选出满足条件的数组项,并组成的新数组返回 - 参数1:遍历数组时需要执行的回调函数
- 回调函数参数1:数组的每一项 item
- 回调函数参数2:每一项的下标 index
- 回调函数参数3:整个数组 array
- 参数2:这个回调函数的
this
指向
Array.prototype.myFilter = function (callback) {var arr = this,len = arr.length,_self = arguments[1] || window,resArr = [];for (var i = 0; i < len; i++) {callback.apply(_self, [arr[i], i, arr]) && resArr.push(arr[i]);}return resArr;
}
Array.prototype.every
对数组进行检测,只要有一个不满足回调函数给定的条件就返回 false
,全部满足条件才返回 true
- 参数1:遍历数组时需要执行的回调函数
- 回调函数参数1:数组的每一项 item
- 回调函数参数2:每一项的下标 index
- 回调函数参数3:整个数组 array
- 参数2:这个回调函数的
this
指向
Array.prototype.myEvery = function (callback) {var arr = this,len = arr.length,_self = arguments[1] || window,res = true;for (var i = 0; i < len; i++) {if (!callback.apply(_self, [arr[i], i, arr])) {res = false;break;}}return res;
}
Array.prototype.some
对数组进行检测,只要有一个满足回调函数给定的条件就返回 true
,全部都不满足条件才返回 false
- 参数1:遍历数组时需要执行的回调函数
- 回调函数参数1:数组的每一项 item
- 回调函数参数2:每一项的下标 index
- 回调函数参数3:整个数组 array
- 参数2:这个回调函数的
this
指向
Array.prototype.mySome = function (callback) {var arr = this,len = arr.length,_self = arguments[1] || window,res = false;for (var i = 0; i < len; i++) {if (callback.apply(_self, [arr[i], i, arr])) {res = true;break;}}return res;
}
Array.prototype.reduce
每次回调函数执行就把初始值当做 prev 传入,reduce
方法返回最终汇总的单个值 - 参数1:遍历数组时需要执行的回调函数
- 回调函数参数1:初始值
- 回调函数参数2:数组的每一项 item
- 回调函数参数3:每一项的下标 index
- 回调函数参数4:整个数组 array
- 参数2:初始值
- 参数3(原本无,这里我给定义一个):this 指向
Array.prototype.myReduce = function (callback, initialVal) {var arr = this,len = arr.length,_self = arguments[2] || window;for (var i = 0; i < len; i++) {initialVal = callback.apply(_self, [initialVal, arr[i], i, arr])}return initialVal;
}
Array.prototype.reduceRight
每次回调函数执行就把初始值当做 prev 传入,reduce
方法返回最终汇总的单个值,和 reduce
的区别就是一个顺着遍历一个倒着遍历 - 参数1:遍历数组时需要执行的回调函数
- 回调函数参数1:初始值
- 回调函数参数2:数组的每一项 item
- 回调函数参数3:每一项的下标 index
- 回调函数参数4:整个数组 array
- 参数2:初始值
- 参数3(原本无,这里我给定义一个):this 指向
Array.prototype.myReduceRight = function (callback, initialVal) {var arr = this,len = arr.length,_self = arguments[2] || window;for (var i = len - 1; i >= 0; i--) {initialVal = callback.apply(_self, [initialVal, arr[i], i, arr])}return initialVal;
}
Array.prototype.push
从数组末尾追加数组元素,并返回追加之后的数组长度 Array.prototype.myPush = function () {var arr = this,args = arguments,argsLen = args.length;for (var i = 0; i < argsLen; i++) {this[this.length] = args[i]; }return this.length;
}
Array.prototype.unshift
从数组开始位置添加数组元素,并返回追加之后的数组长度 Array.prototype.myUnshift = function () {var arr = this,args = arguments,argsLen = args.length;for (var i = 0; i < argsLen; i++) {arr.splice(i, 0, arguments[i]);}return arr.length;
}