js数组方法内部实现

var arr = ['A', 'B', 'C', 'D'];
//push:将参数添加到原数组末尾,并返回数组的长度 
Array.prototype.push=function(){
   for(var i=0; i
      this[this.length]=arguments[i]
   }
   return this.length
}
arr.push('E')
console.log(arr)
//pop:删除原数组最后一项,并返回删除元素的值;如果数组为空则返回undefined 
Array.prototype.pop =function() {
   var val;
   for(var i = 0; i < this.length; i++){
       if(i ==this.length - 1) {
          val = this[i];
          this.length-=1;
      }
   }
   return val;
}
arr.pop()
console.log(arr)
//reverse:将数组反序 
Array.prototype.reverse=function(){
   var arr=[];
   for(var i=this.length-1; i>=0;i--){
      arr.push(this[i])
   }
   for(var i=0; i
      this[i]=arr[i]
   }
   return this.length
}
arr.reverse()
console.log(arr)

//slice(start,end):返回从原数组中指定开始下标到结束下标之间的项组成的新数组 
Array.prototype.slice=function(){
   var start=arguments[0];
   var end=arguments[1];
   var arr=[]
   if(end){
       for(vari=0; i
         if(i>=start&&i<=end){
             arr.push(this[i]);
          }
      }
       returnarr;
   }else{
       for(vari=0; i
          if(i>=start){
             arr.push(this[i]);
          }
      }
       returnarr;
   }
}

b=arr.slice(1,3)
console.log(b)

//join('|'):将数组的元素组起一个字符串,以'|'为分隔符,省略的话则用默认用逗号为分隔符 
Array.prototype.join=function(){
   if(typeof arguments[0]!='string'){
      join=','
   }else{
      join=arguments[0];
   }
   var val='';
   for(var i=0; i
      val+=(this[i]+join)
   }
   return val;
}
c=arr.join('|')
console.log(c)

//indexOf: 知道值查找坐标
Array.prototype.indexOf=function(){
   for(var i=0; i
      if(this[i]==arguments[0]){
          return i
      }
   }
}
console.log(arr.indexOf('A'));

//shift:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 
Array.prototype.shift=function(){
   var arr=[];
   var one=this[0];
   for(var i=1; i
      arr.push(this[i])
   }
   
   for(var i=0; i
      this[i]=arr[i]
   }
   this.pop();
   return one;
}
console.log(arr.shift())
console.log(arr)

//unshift:将参数添加到原数组开头,并返回数组的长度 
Array.prototype.unshift=function(){
   var arr=[];
   for(i in this){
      arr.push(this[i])
   }
   for(var i=0; i
      this[i]=arguments[i];
   }
   for(var i=0; i
      this.push(arr[i])
   }
   return this.length;
}
d=arr.unshift(-2,-1)
console.log(d)
console.log(arr)

你可能感兴趣的:(js数组方法内部实现)