数组API-迭代方法的重构(every,some,filter,map,forEach)

数组API-迭代方法重构



1.every

       重构every,如果有一项不满足的就会直接返回false,不再继续往后判断。只有全部都满足,才会返回true。

	let arr=[1,2,3,4,5];
	Array.prototype.myEvery=function(fun,obj){
	    for(i=0;i<arr.length;i++){
	        // this---arr   使用this代替arr  被谁调用指向谁  arr被myEvery调用
	        // 如果第二个参数存在,就发生this指向的修改
	        if(!obj?fun.bind(obj)(this[i]):fun(this[i])){
	            return false
	        }
	    }
	    return true
	}
	// 上面相当于 function myEvery(){}  声明了一个函数
	// 下面相当于myEvery()  函数调用
	// item当前对象,index当前索引,arr数组对象
	let result=arr.myEvery(function(item,index,arr){
	    console.log(this);
	    //这里的是this指向第二个参数,当没有第二个参数指向global,第二个参数可以是任意数据类型,比如字符串,对象等
	    return item>1
	},{ name: 'zhansgan' });
	console.log(result);

2.some

      重构some时,如果有一项满足直接返回true,不再往后判断,直接返回true。只有全部不满足,才会返回false。

	let arr=[1,2,3,4,5];
	Array.prototype.mySome=function(fun,obj){
	    for(i=0;i<arr.length;i++){
	        if(obj?fun.bind(obj)(this[i]):fun(this[i])){
	            return true;
	        }
	    }
	    return false;
	}
	let result=arr.some(function(item,index,arr){
	    //打印了两次,第一次是执行,第二次是查找打印
	    console.log(this);
	    return item>1
	},{ name: 'zhansgan' });
	console.log(result);

3.filter

      重构filter,返回满足条件的新数组。

	let arr=[1,2,3,4,5];
	Array.prototype.myFilter=function(fun,obj){
	    let result=[];
	    for(i=0;i<arr.length;i++){
	        if(obj?fun.bind(obj)(this[i]):fun(this[i])){
	            result.push(this[i]);
	        }
	    }
	    return result;
	}
	let result=arr.filter(function(item,index,arr){
	    // 共打印五次,满足条件打印
	    console.log(this);
	    return item>1
	},{ name: 'zhansgan' });
	console.log(result);

4.map

      重构map映射,对每一项数组项进行操作,返回的是操作后的一个新数组。

	let arr=[1,2,3,4,5];
	Array.prototype.myMap=function(fun,obj){
	    let result=[];
	    for(i=0;i<arr.length;i++){
	        result.push(obj?fun(obj)(this[i]):fun(this[i]))
	    }
	    return result;
	};
	let result=arr.map(function(item,index,arr){
	    // 共打印五次,满足条件打印
	    console.log(this);
	    return item+1;
	},{ name: 'zhansgan' });
	console.log(result);

5.forEach

      重构forEach,用于调用数组的每个元素,并将元素传递给回调函数。

	let arr=[1,2,3,4,5];
	Array.prototype.myForEach=function(fun){
	  	for(i=0;i<this.length;i++){
	    	fun(this[i],i,this)
	  	}
	}
	let result=arr.myForEach(function(item,index,arr){
	  	console.log(item,index,arr)
	});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值