学会如何封装js数组的功能api
1、封装 find 方法
官方给出的 find 调用方式
array.find(function(currentValue, index, arr),thisValue)
利用 Array原型我们也可以封装出
// prototype 原型链 后续方法名字自定义
Array.prototype.muddyFind = function(arg){
// 判断参数是否是函数
if (typeof arg !== 'function') {
throw ('The parameter must be a function')
return
}
// this 指的是调用方 在 Array 原型里封装的方法 那肯定执行的调用数组
for(let item of this){
if(arg(item)){
return item
}
}
}
2、 封装 findIndex 方法
官方给出的 find 调用方式
array.findIndex(function(currentValue, index, arr), thisValue)
Array.prototype.muddyFindIndex = function (arg) {
if (typeof arg !== 'function') {
throw ('The parameter must be a function')
return
}
// 只要调用 myFindIndex 函数,就会遍历对象 users 的每一项
for (var i = 0; i < this.length; i++) {
if (arg(this[i])) {
return i;
}
}
}
3、 封装 map方法
官方给出的 find 调用方式
array.map(function(currentValue,index,arr), thisValue)
Array.prototype.myFindIndex = function (fun) {
const list = []
if (typeof fun === 'function') {
for (let i = 0; i < this.length; i++) {
list.push(fun(this[i], i, this))
}
} else {
for (let i = 0; i < this.length; i++) {
list.push(fun)
}
}
return list
}