手写数组的every,some,shift,unshift,forEach方法

本文介绍了如何手动实现JavaScript数组的every、some、shift方法,以及提供了两种不同的shift实现方式,同时包含了forEach方法和unshift方法的手写代码,旨在帮助读者深入理解这些数组方法的内部工作原理。
摘要由CSDN通过智能技术生成

手写数组的every方法

   

 Array.prototype._myevery = function(excutor){
             //参数接收一个函数,返回的是一个布尔类型的值!
             var result   = true;
             for(var i=0;i<this.length;i++){//对数组进行for循环来遍历数组中的每个元素
                if(!excutor(arr[i])){//数组的every方法接收的是一个函数,并且函数的参数是数组中的每个元素!!!!
                    result = false;//数组every方法的特点就是只要返回的是false,就停止遍历!
                    break;
                }else{
                    continue;//数组的every方法如果符合程序员写的条件,就继续遍历
                }
             };
             return result;//数组的every方法的返回值是一个布尔类型的值
        }
        var arr = [1,2,3,4];
       
        var res =  arr._myevery((ele)=>{
            if(ele<5){
                return  true;
            }else{
                return false;
            }
        });
console.log(res);//true

手写数组的some方法

  

//能清楚看到他们两个区别
 Array.prototype._mysome = function(excutor){
          var result = false;  //区别一
          for(var i=0;i<this.length;i++){
            if(excutor(this[i])){
              result  = true;//区别二
              break;
            }else{
              continue;
            }
          }
          return result;
      }
     var arr = [1,2,3,4,5,6];
     let res = arr._mysome((ele)=>{
      return ele>6;
     });
     console.log(res);

手写数组的shift函数;

   //借助数组的方法;

Array.prototype._myshift = function(){
          //借助API实现
          var result = this[0];
          this.reverse();
          this.length--;
          this.reverse();
          return result;
      }
      var arr = [5,2,3,4];
      var res =  arr._myshift();
      console.log(res,arr);//5 [2,3,4];

//借助数组方法;一行代码

 

  Array.prototype._myshift = function(){
          //借助API实现
          return this.splice(0,1)[0];
      }
      var arr = [5,2,3,4];
      var res =  arr._myshift();
      console.log(res,arr);

不适用API

 

 Array.prototype._myshift = function(){
          //不借助API实现
          var result = this[0];
          for(var i=0;i<this.length-1;i++){
             this[i] = this[i+1];
          };
          this.length--;
          return result;
      }
      var arr = [5,2,3,4];
        
      var res =  arr._myshift();
      console.log(res,arr);// 5,[2,3,4]
      
 Array.prototype._myshift = function(){
          //不借助API实现
          var [first,...args] = this;
          this.length--;
          for(var i=0;i<args.length;i++){
            this[i] = args[i];
          }

          return first;
      }
      var arr = [5,2,3,4];
        
      var res =  arr._myshift();
      console.log(res,arr);

其实不用Api就是使用for循环,如果有哪位大佬,有什么好的方法,希望不吝赐教!!

forEach()的手写

 

  Array.prototype._myforEach = function(excutor){
         for(var i=0;i<this.length;i++){
          excutor(i);
         }
      }
      

unshift()方法的手写

 

 Array.prototype._myunshift = function(x){
      var arr = [x,...this];
      for(var i=0;i<arr.length;i++){
        this[i] = arr[i];
      };
      return this.length;
    }
    var arr = [1,2,3,4,5];
     var res =  arr._myunshift(0);
     console.log(res,arr);

抛砖引玉,希望有其他新奇的方法的大佬,留言,感谢为教育事业做出的贡献!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值