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,""));