数组方法重构(part:1)

149 阅读1分钟

push

function push(arr){
          for(var i=1;i<arguments.length;i++){
              arr[arr.length]=arguments[i];
          }
          return arr.length;
      }
      var arr=[];
      var len=push(arr,1,2,3);
      console.log(len,arr);

pop

function pop(arr){
        var elem=arr[arr.length-1];
        if(arr.length>0) arr.length--;
        return elem;
    }

unshift

一、 function unshift(arr){
        var len=arguments.length-1;
        for(var i=arr.length-1;i>=0;i--){
            arr[i+len]=arr[i];
            arr[i]=null;
        }
        for(var j=1;j<arguments.length;j++){
            arr[j-1]=arguments[j];
        }
        return arr.length;
    }

    二、function unshift(arr){
        var arr1=[];
        for(var i=0;i<arr.length;i++){
            arr1[i]=arr[i];
        }
        arr.length=0;
        for(var j=1;j<arguments.length;j++){
            arr[j-1]=arguments[j];
        }
        for(var k=0;k<arr1.length;k++){
            arr[arr.length]=arr1[k];
        }
        return arr.length;
    }

shift

function shift(arr){
        var elem=arr[0];
        for(var i=1;i<arr.length;i++){
            arr[i-1]=arr[i];
        }
        if(arr.length>0) arr.length--;
        return item;
    }

join

function join(arr,separator){
        if(separator===undefined) separator=",";
        separator=String(separator);
        var str="";
        for(var i=0;i<arr.length;i++){
            if(i!==arr.length-1) str+=arr[i]+separator;
            else str+=arr[i];
        }
        return str;
    }

concat

function concat(arr){
        var arr1=[];
        for(var i=0;i<arr.length;i++){
            arr1[i]=arr[i];
        }
        if(arguments.length===1) return arr1;
        for(var j=1;j<arguments.length;j++){
            if(arguments[j]!==null && arguments[j].constructor===Array){
                for(var k=0;k<arguments[j].length;k++){
                    arr1[arr1.length]=arguments[j][k];
                }
            }else{
                arr1[arr1.length]=arguments[j];
            }
        }
        return arr1;
    }

slice

function slice(arr,start,end){
        if(start===undefined) start=0;
        if(end===undefined) end=arr.length;
        start=Number(start);
        end=Number(end);
        if(!isNaN(end) && isNaN(start)) start=0;
        if(isNaN(start)) return [];
        if(start<0) start=arr.length+start;
        if(end<0) end=arr.length+end;
        var arr1=[];
        for(var i=start;i<end;i++){
            arr1[i-start]=arr[i];
        }
        return arr1;
    }

reverse

function reverse(arr){
        var len=parseInt(arr.length/2);
        for(var i=0;i<len;i++){
            var temp=arr[i];
            arr[i]=arr[arr.length-i-1];
            arr[arr.length-i-1]=temp;
        }
        return arr;
    }