JavaScript常用方法push、pop、shift、unshift、concat、join的封装

762 阅读2分钟

push() 在数组尾部添加一个或多个新元素,并且返回数组的新长度

var arr = [1,2,3];
var arr1 = arr.push(4);
console.log(arr,arr1);//[1,2,3,4] 4
var arr2 = arr.push(5,6,7);
console.log(arr,arr2);//[1,2,3,4,5,6,7] 7

push()封装:

        var arr=[1,2,3];
        
        console.log(arr.push(5));
        arr.push(5,6,7);

         function push(arr){
            for(var i=1;i<arguments.length;i++){
                arr[arr.length]=arguments[i];
            }
            return arr.length;
        }

       var i=push(arr,5,6,7);
       console.log(arr,i); 

pop() 删除数组的尾部元素,并且返回这个被删除的元素

var arr = [1,2,3];
var arr2 = arr.pop();
console.log(arr,arr2);//[1,2] 3

pop()封装:

         var arr=[1,2,3];
         
         var item=arr.pop();
         console.log(item,arr);

         function pop(arr){
             var item=arr[arr.length-1];
             arr.length--;
             return item;
         }

         pop(arr);

shift() 删除数组arr第一个元素并且返回该元素

var arr = [1,2,3];
var arr1 = arr.shift();
console.log(arr,arr1);//[2,3] 1

shift()封装:

    var arr=[[1,2],2,3,4,5],num;
        
        
        function shift(arr){
            num=arr[0];
            var arr1=[];
            for(var i=1;i<arr.length;i++){
                arr1[i-1]=arr[i];
            }
            return num;
        }
        console.log(shift(arr));

unshift() 将一个或者多个新元素添加在数组的最前面,返回数组的新长度

var arr = [1,2,3];
var arr1 = arr.unshift(4,5);
console.log(arr,arr1);//[4,5,1,2,3] 5

unshift()封装:

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

        unshift(arr,10,11,12);
       console.log(arr); 

concat() 没有参数时,是复制数组,有参数时,将arr数组连接参数,形成新数组,原数组不变,如果参数是数组时,将数组arr与数组合并形成新数组,长度相加

var arr = [1,2,3,4];
var arr1 = arr.concat(10,11,12);
var arr2 = arr.concat();
var arr3 = arr.concat([10,11,12]);
var arr4 = arr.concat([10,11,12],[13,14,15]);
console.log(arr1);//[1,2,3,4,10,11,12]
console.log(arr2);//[1,2,3,4] 相当于复制了arr
console.log(arr3);//[1,2,3,4,10,11,12]
console.log(arr4);//[1,2,3,4,10,11,12,13,14,15]

concat()封装:

var arr = [1,2,3];
function concat(arr){
    var arr1 = [];
    var index = 0;
    for(var i=0; i<arr.length;i++,index++){
        arr1[index] = arr[i];
    }
    for(var j =1;j<arguments.length;j++,index++){
        if(arguments[j].constructor === Array){
            for(var k=0;k<arguments[j].length;k++,index++){
                arr1[index] = arguments[j][k];
            }
            index--;
        }else{
            arr1[index] = arguments[j];
        }
    }
    return arr1;
}
console.log(concat(arr,[4,5],[6,7]));

join() 与arr.toString()相同,将数组转换为字符串,参数为设置的符号,使数组的每个元素用参数符号连接,形成新字符串,如果加的是空字符串,则元素直接紧密相连

var arr = [1,2,3];
console.log(arr.join());//1,2,3
console.log(arr.join(","));//1,2,3
console.log(arr.join(""));//123

join封装:

var arr = [1,2,3];
function join(arr,type){
    var str = "";
    for(var i=0;i<arr.length;i++){
        str += arr[i] + type;
    }
    if(type) str=str.substr(0,str.length-1);
    return str;
}
console.log(join(arr,""));