Javascript 数组方法 push,pop,shift,unshift,concat,join

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
var arr3 = arr.push([2,3,4]);
console.log(arr,arr3);//打印的结果如下图

当push ( ) 的参数为一个数组时,会把这个数组整体添加在原数组的尾部。
在这里插入图片描述
push() 的实现过程:

var arr=[1,2,3];
function push(arr){
	for(var i =1;i<arguments.length;i++){
	   arr[arr.length]=arguments[i];
	}
	return arr.length;
	}
var s = push(arr,5,6,7);
console.log(arr,s);// [1,2,3,5,6,7]  6
pop(),删除数组的尾部元素,并且返回这个被删除的元素,原始数组会被改变
var arr = [1,2,3];
var arr2 = arr.pop();
console.log(arr,arr2);//[1,2] 3

pop() 的实现过程:

var arr = [1,2,3];
function pop(arr){
    var s = arr[arr.length-1];
    arr.length--;
    return s;
}
console.log(arr,pop(arr));//[1,2] 3
unshift( ),将一个或者多个新元素添加在数组的最前面,返回数组的新长度,注意是把参数整体添加在数组的最前面,参数的顺序不变。
var arr = [1,2,3];
var arr1 = arr.unshift(4,5);
console.log(arr,arr1);//[4,5,1,2,3] 5
var arr2 = arr.unshift([4,5,6]);
console.log(arr,arr2);//打印结果如下图

当unshift ( ) 的参数为数组时,同 push ( ) ,会将该数组元素整体添加到原数组的最前面。
在这里插入图片描述
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;
}
var arr1 = unshift(arr,3,4,5);
console.log(arr,arr1);
shift ( ),删除数组的第一个元素,并且返回该元素,原数组会改变
var arr = [1,2,3];
var arr1 = arr.shift();
console.log(arr,arr1);//[2,3] 1

shift( )的实现过程:

var arr = [1,2,3];
function shift(arr){
    var s = arr[0];
    for(var i=0;i<arr.length-1;i++){
        arr[i] = arr[i+1];
    }
    arr.length--;
    return s;
}
console.log(arr,shift(arr));
concat(),基于当前数组创建一个新数组,复制后给新数组添加新元素,多个数组连接形成新数组,原数组不改变
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]

判断一个变量是否为数组
ES6中提供了 isArray ( arr ) 方法,返回 true 或者 false。
ES5中可以使用 arr.constructor = = = Array 或者 Object.prototype.toString.call(arr) = = ="[object Array]"来判断。

 //ES6 
console.log(Array.isArray(arr));
//ES5
console.log(Object.prototype.toString.call(arr)==="[object Array]");
console.log(arr.constructor===Array);

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 ( ) ,将数组按照不同的分隔符转换为字符串,如果参数为空,转成字符串后,中间是用逗号隔开。
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,""));
发布了46 篇原创文章 · 获赞 26 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Charissa2017/article/details/103766700