数组对象的常用方法
1.concat()
concat()在数组最后拼接成一个新的数组,具有拷贝功能,不影响原数组
//新建1个数组arr1
//arr2=arr1 只是单纯的引用
//arr3=arr1.concat() 不添加新的数组,直接拷贝数组arr1
//arr4=arr1.concat(4,5); 添加新的数组[4,5],组成新的数组
var arr1=new Array(1,2,3);
var arr2=arr1;
var arr3=arr1.concat();
var arr4=arr1.concat(4,5);
console.log(arr1); //[1, 2, 3]
console.log(arr2); //[1, 2, 3]
console.log(arr3); //[1, 2, 3]
console.log(arr4); //[1, 2, 3, 4, 5]
//改变arr2 由于arr2只是单纯的引用,会影响原数组
arr2[1]=6;
console.log(arr1); //[1, 6, 3]
console.log(arr2); //[1, 6, 3]
console.log(arr3); //[1, 2, 3]
console.log(arr4); //[1, 2, 3, 4, 5]
//改变arr3 由于arr3直接拷贝了数组arr1,所以arr3的改变不会影响其他数组
arr3[0]=9;
console.log(arr1); //[1, 6, 3]
console.log(arr2); //[1, 6, 3]
console.log(arr3); //[9, 2, 3]
console.log(arr4); //[1, 2, 3, 4, 5]
//改变arr4 由于arr4是由arr1拼接数组[4,5]组成的新数组,所以arr4的改变不会也不会影响其他数组
arr4[2]=8;
console.log(arr1); //[1, 6, 3]
console.log(arr2); //[1, 6, 3]
console.log(arr3); //[9, 2, 3]
console.log(arr4); //[1, 2, 8, 4, 5]
2.join()
join()将数组拼接成一个字符串
//新建1个数组arr5
var arr5 = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
//将arr5用join()方法拼接成一个字符串,用str1存放字符串
var str1 = arr5.join(); //join()参数为空时,自动用','拼接
console.log(str1); //1,2,3,4,5,6,7,8,9,0
str1 = arr5.join(''); //join('')参数为'',用空字符串拼接时,能进行无缝拼接
console.log(str1); //1234567890
str1 = arr5.join('+'); //join('+')参数为'+'时,用'+'拼接
console.log(str1); //1+2+3+4+5+6+7+8+9+0
3.pop()
pop()去掉数组的最后一个对象
//新建1个数组arr6
var arr6 = new Array(1,2,5);
console.log(arr6.pop());//用pop()方法,截断数组最后一位,return被截断的对象:5
console.log(arr6); //pop()方法改变原数组为:[1, 2]
4.push()
push()在数组的末尾添加新的对象
//新建1个数组arr7
var arr7=new Array('a','b','c')
console.log(arr7.push(123,function(){
console.log('qwer');
}));
//向数组对象添加数字好函数混合的数组 [123,function(){console.log('qwer');}] 返回新数组长度 5
console.log(arr7);
//["a","b","c",123,function]
arr7[4]();
//控制台输出 qwer 数组内匿名函数可用
5.reverse()
reverse()将数组倒序排序
//新建1个数组arr8
var arr8=new Array('a','b','c',3,2,1)
console.log(arr8.reverse());//[1, 2, 3, "c", "b", "a"]数组倒序
console.log(arr8);//[1, 2, 3, "c", "b", "a"]
6.shift()
shift()截断数组的第一个对象
//新建1个数组arr9
var arr9=new Array('a','b','c',3,2,1)
console.log(arr9.shift());//返回被截断的对象 a
console.log(arr9);//["b", "c", 3, 2, 1]
7.slice()
slice()截取数组的一部分
//新建1个数组arr10
var arr10=new Array('a','b','c',3,2,1)
console.log(arr10.slice(0, 3)); //["a", "b", "c"] 从下标为0开始截取,截取到下标为3之前的对象
console.log(arr10.slice(1)); //["b", "c", 3, 2, 1] 从下标为1开始截取到数组最后一个的对象
console.log(arr10); //["a", "b", "c", 3, 2, 1] 不改变原数组
8.sort()
sort()对数组进行排序
//新建1个数组arr11
var arr11 = new Array(39,1,2,22,3,0,23,10,32,21);
console.log(arr11.sort());//[0, 1, 10, 2, 21, 22, 23, 3, 32, 39]
//默认排序,优先按数字对象的第一个数字开始排序,之后以首数字进行第二次排序
console.log(arr11.sort(function(a, b) {
return a - b;
}));//用函数输入一个算法a-b
//[0, 1, 2, 3, 10, 21, 22, 23, 32, 39] 按从小到大排序
console.log(arr11.sort(function(a, b) {
return b - a;
}));//用函数输入一个算法b-a
//[39, 32, 23, 22, 21, 10, 3, 2, 1, 0] 按从大到小排序
console.log(arr11);//[39, 32, 23, 22, 21, 10, 3, 2, 1, 0] 改变原数组
9.splice()
splice()可以进行对数组进行任意位置的拼接、删除、修改
//新建1个数组arr12
var arr12 = new Array('a','w','s','d',1,2,3,4,5,6);
console.log(arr12.splice(6, 0, 'Alice'));//在数组的下标为6前,不进行截取,添加字符串'Alice',没有进行截取不返还任何值
console.log(arr12);//改变原数组["a", "w", "s", "d", 1, 2, "Alice", 3, 4, 5, 6]
console.log(arr12.splice(2, 4, 'Doris'));//在数组下标为2开始进行截取,截取4位,返回被截取的对象["s", "d", 1, 2],在被截断的位置添加字符串'Doris'
console.log(arr12);//改变原数组["a", "w", "Doris", "Alice", 3, 4, 5, 6]
console.log(arr12.splice(0, 2));//在数组下标为0开始进行截取,截取2位,返回被截取的对象["a", "w"]
console.log(arr12);//改变原数组["Doris", "Alice", 3, 4, 5, 6]
console.log(arr12.splice(2));//在数组下标为2开始进行截取直到数组最后一位对象,返回被截取的对象[3, 4, 5, 6]
console.log(arr12);//改变原数组["Doris", "Alice"]
10.toString()和toLocaleString()
toString()将数组转换成字符串、toLocaleString()将数组按本地格式转换成字符串
//新建1个数组arr13
var arr13 = new Array('a','w','s','d',10000,.2222222,3,4,5,6);
console.log(arr13.toString());
//将数组转换成字符串返回 a,w,s,d,10000,0.2222222,3,4,5,6
console.log(arr13.toLocaleString());
//将数组按本地格式转换成字符串返回 a,w,s,d,10,000,0.222,3,4,5,6
console.log(arr13);
//不改变原对象 ["a", "w", "s", "d", 10000, 0.2222222, 3, 4, 5, 6]
11.unshift()
unshift()在数组下标为0之前添加对象
//新建1个数组arr14
var arr14 = new Array(1,2,3,3,2,1);
console.log(arr14.unshift(0,0,7));//添加数组[0,0,7],返回新数组的长度9
console.log(arr14);//原数组改变[0, 0, 7, 1, 2, 3, 3, 2, 1]
12.valueOf()和toSource()
valueOf()和toSource()都是返回该对象的源代码,toSource()只有火狐支持,而valueOf()在火狐对function对象进行使用时只返回对象的名称,所以要进行兼容性处理
//新建1个数组arr15
var arr15=new Array('devil','May','Cry');
//给数组对象添加一个函数对象
arr15.protagonist=function(){
console.log('Dante');
}
//toSource只有火狐浏览器支持,封装一个函数进行兼容性处理
function origin(obj) {
if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) {
console.log(obj.toSource());
} else {
console.log(obj.valueOf());
}
}
origin(arr15);//返回["devil", "May", "Cry", protagonist: function]
origin(arr15.protagonist);//返回function (){console.log('Dante');}
console.log(arr15);//不改变原数组["devil", "May", "Cry", protagonist: function]