数组方法
1. join()
,数组转字符串,原数组没有被修改。
可选参数:一个字符串参数。数组的 join()
方法的实现:先把所有的单个元素都转成字符串,然后按照参数链接每单个元素,不传参数时,默认用 ","
链接每单个元素。
var arr=[1,2,3,4,5]; var str=arr.join(); str;//"1,2,3,4,5" var str2=arr.join("-"); str2;//"1-2-3-4-5" var arr2=str2.split("-"); //split()是字符串的方法 arr2;//[1,2,3,4,5]
2. reverse()
,数组倒序排序,数组被修改。
var arr=[5,4,3,2,1]; arr.reverse(); arr;//[1,2,3,4,5]
3. sort()
,排序方法,数组被修改。
可选参数:为一个比较函数,不传时,按字母表顺序排序(如有必要转化成字符串比较)。
var arr=[2,3,1,"a","A","b","B"]; arr.sort(); //不穿参数,按字母表顺序排序 arr;//[1,2,3,A,B,a,b] arr.sort(function(a,b){ //小到大排序 return a-b; }); arr.sort(function(a,b){ //大到小排序 return b-a; }); var arr2=["But","add","Add","but"]; arr2.sort(function(a,b){ var x=a.toLowerCase(); var y=b.toLoweCase(); if(x>y) return 1; if(x<y) return -1; return 0; }); arr2;//["add","Add","But","but"]
4. concat()
,不会修改调用的数组,创建并返回一个新数组,包含调用数组的元素和参数,如果参数是是数组,链接的是数组元素而非数组本身。
var arr=[1,2,3]; arr.concat(4,5);//返回[1,2,3,4,5] arr.concat(4,5);//返回[1,2,3,4,5] 之前的调用concat()并没有修改调用的数组 arr.concat(4,[5,6]); //返回[1,2,3,4,5,6] 参数是数组的,链接的元素而非本身 arr.concat(4,[5,[6]]);//返回[1,2,3,4,5,[6]]
5. slice()
,不会修改调用的数组,返回一个子数组,参数指定的是调用数组的索引,即开始和结束的位置,可以是 0
个、 1
个或 2
个,无参数时返回调用数组具有相同元素的另个数组,参数为 1
个时返回调用数组索引大于等于 1
的元素,索引为 2
个时返回第一个索引和最后一个索引之间的元素,包含第一个索引的元素,不包含最后一个索引的元素。
var arr=[1,2,3,4,5]; arr.slice();//返回另一个具有相同元素的数组[1,2,3,4,5] arr.slice(1);//返回[2,3,4,5] arr.slice(-1); //返回[5] 最后一个元素为-1,倒数第二个为-2,依次类推 arr.slice(1,-1);//返回[2,3,4] 包含第一个索引的元素,不包含第二个索引的元素
6. splice()
,返回一个被删除的元素组成的数组,会修改调用数组,第一个参数必须,可传入1以上的参数,第一个参数为要开始删除的索引,第二个参数为要删除几个,后面的参数为要插入的元素。
var arr=[1,2,3,4,5,6]; arr.splice(4);//返回[5,6], arr为[1,2,3,4] arr.splice(1,1);//返回[2],arr为[1,3,4] arr.splice(1,2,"a","b"); //返回[3,4], arr为[1,a,b] arr.splice(0,0,"A","B"); //返回[],arr为["A","B",1,a,b]
7、 pop()
和 push()
, shift()
和 unshift()
var arr=[1,2,3]; arr.push(4);//返回arr的新长度4,push在末尾添加一个或多个元素 arr;//返回[1,2,3,4] arr.pop();//没有参数,去掉数组最末尾的一个元素,返回被删除的元素 arr;//返回[1,2,3] arr.unshift(0);//在数组最前面添加一个或多个元素,返回数组最新的长度 arr.shift();//删除数组第一个元素,返回被删除的元素
8、 toString()
和 toLocaleString()
,
var arr=[1,2,"a",[["b"]]]; arr.toString();//"1,2,a,b" //toString()和没有传参数的join()方法返回的是一样的字符串,toLocaleString()返回本地化字符串,很少用