手写数组的map reduce filter bind findIndex find every some等方法

手写map方法

Array.prototype.map=function (callback){
   const arr=[];
   for(let i=0;i<this.length;i++){
      arr.push(callback(this[i],i));
   }
   return arr;
}
let arr1=[1,2,3,4,5];
let arr2=arr1.map((item,index)=>{
  if(index % 2 == 1){
    return item + 10;
  }else{
    return item + 20;
  }
});

手写reduce

Array.prototype.reduce=function(callback,initialValue){
  let total=initialValue;
  for(let i=0;i<this.length;i++){
    total=callback(total,this[i],i);
   }
  return total;
}
let arr1=[1,3,4,5,7,8];
let arr2=arr1.reduce((pre,item,index)=>{
  if(item % 2 ==1 && index % 2 ==1){
    pre+=item;
  }
  return pre;
},0)

手写filter

Array.prototype.filter=function(callback){
  let arr=[];
  for(let i=0;i<this.length;i++){
    if(callback(this[i],i)){
      arr.push(this[i])
    }
   } 
   return arr;
}
let arr1=[1,3,4,5,7,8];
let arr2=arr1.filter((item,index)=>index % 2 ==1);

手写find

Array.prototype.find=function(callback){
 for(let i=0;i<this.length;i++){
   if(callback(this[i],i)){
     return this[i];
   }
 }
}
let arr1=[112,12,3,4]; 
let arr2=arr1.find(item=>item%2==1);

手写findIndex

Array.prototype.findIndex=function(callback){
 for(let i=0;i<this.length;i++){
   if(callback(this[i],i)){
     return i;
   }
 }
 return -1;
}
let arr1=[112,12,3,4]; 
let arr2=arr1.findIndex(item=>item%2==1);

手写every

Array.prototype.every=function(callback){
 for(let i=0;i<this.length;i++){
   if(!callback(this[i],i)){
     return false;
   }
 }
 return true;
}
let arr1=[112,12,3,4]; 
let arr2=arr1.every(item=>item%2==1);

手写some

Array.prototype.some=function(callback){
 for(let i=0;i<this.length;i++){
   if(callback(this[i],i)){
     return true;
   }
 }
 return false;
}
let arr1=[112,12,3,4]; 
let arr2=arr1.some(item=>item>13);

小知识点:

//将JSON转为对象的操作
   JSON.parse('json字符串' || '{}')
// 路由跳转的方式:
1.this.props.history.replace('/login') //事件回调函数中进行路由跳转,比如点击登录按钮时。
2.<Redirect to='/login'> //自动跳转到指定路由路径,在render里面
3.fn.call(obj,2,3) //调用fn函数,并且将函数的this变为obj
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值