<!DOCTYPE html>
<html>
<head>
? ? <meta charset="UTF-8">
? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">
? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">
? ? <title>手寫數(shù)組高階函數(shù)</title>
</head>
<body>
? ? <script>
? ? ? ? let arr = [3,5,2,7,8]
? ? ? ? // 1.手寫forEach()方法
? ? ? ? function forEach(arr,callback){
? ? ? ? ? ? for(let i=0;i<arr.length;i++){
? ? ? ? ? ? ? ? callback(arr[i],i)
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? forEach(arr,(item,index)=>{
? ? ? ? ? ? console.log(index+'---'+item);
? ? ? ? })
? ? ? ? console.log('----------------------------');
? ? ? ? // 2.手寫every()方法
? ? ? ? function every(arr,callback){
? ? ? ? ? ? for(let i=0;i<arr.length;i++){
? ? ? ? ? ? ? ? if(!callback(arr[i])){
? ? ? ? ? ? ? ? ? ? return false
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return true
? ? ? ? }
? ? ? ? console.log(every(arr,num=>num>10));
? ? ? ? console.log(every(arr,num=>num%3===0));
? ? ? ? console.log('----------------------------');
? ? ? ? // 3.手寫reduce()方法
? ? ? ? function reduce(arr,callback,initNum){
? ? ? ? ? ? for(let i=0;i<arr.length;i++){
? ? ? ? ? ? ? ? let r = callback(initNum,arr[i])
? ? ? ? ? ? ? ? initNum = r ?//每次返回的結(jié)果,需要替換initNum
? ? ? ? ? ? }
? ? ? ? ? ? return initNum
? ? ? ? }
? ? ? ? console.log(reduce(arr,(a,b)=>a+b,0));
? ? </script>
</body>
</html>