手写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