js学习笔记——数组方法
join()
把数组中所有元素转化为字符串并连接起来,并返回该字符串,
var arr=[1,2,3]; var str=arr.join("#"); //str="1#2#3";
如果没有指定分隔符,则默认为逗号
var str2=arr.join(); //str2="1,2,3";
reverse()
在原数组上把元素的顺序颠倒过来,并返回该数组
var arr=[1,2,3]; arr.reverse(); //arr=[3,2,1];
sort()
在原数组上对数组元素进行排序,并返回该数组
在没有使用参数的时候,是将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序,如
var arrNum=[2,11,3]; var arrStr=["bb","aa","cc"]; arrNum.sort(); //arrNum=[11,2,3] arrStr.sort(); //arrStr=["aa","bb","cc"];
对于数组里出现不同类型的元素的时候,比如数字与字符串,数组的元素是数组,当然如果一个数组里的元素有好几种数据类型,如函数,数组,对象,字符串……再对此数组进行排序是没有实际意义的
var arr1=["22",11,3]; var arr2=[[3,2],[111,3,222],[222,333]]; arr1.sort(); //arr1=[11,"22",3]; arr2.sort(); //arr2=[[111,3,222],[222,333],[3,2]];
sort()能接受一个比较函数作为参数,如:
var arrNum2=[3,5,2,1,4]; arrNum2.sort(function(a,b){ return a-b; }); //arrNum2=[1,2,3,4,5]; arrNum2.sort(function(a,b){ return b-a; }); //arrNum2=[5,4,3,2,1];
concat()
这个不懂怎么描述,直接看结果就明白啥意思了,他放回的是新建的数组,不会对原数组作修改
var arr=[1,2,3]; var arr2=[4,5]; var arr3=[6,7,[8,9]]; var str="hello wrold"; var num=10; arr.concat(arr2); //返回[1,2,3,4,5] arr.concat(str); //返回[1,2,3,"hello world"] arr.concat(num); //返回[1,2,3,10]; arr.concat(arr3); //返回[1,2,3,6,7,[8,9]]
slice()
返回指定数组的子数组,返回的是一个新的数组
他接受两个参数,返回的数组包含第一个参数指定位置和所有但不包含第二个参数指定位置的所有数组元素,如
var arr=[1,2,3,4,5]; arr.slice(1,3); //返回[2,3];
如果只指定一个参数,则返回从第一个参数指定的位置开始到数组结尾的所有数组元素,如
var arr=[1,2,3,4,5]; arr.slice(2); //返回[3,4,5];
如果参数是负数,则表示倒数位置,如-1表示倒数第一个元素,-3表示倒数第三个元素,如
var arr=[1,2,3,4,5]; arr.slice(1,-1); //return [2,3,4];
arr.slice(-3,-1); //return [3,4];
arr.slice(-6,-1); //return [1,2,3,4];
如果第一个参数比第二个参数大,或者参数值比数组长度大,如下面这些都是放回空数组[]
var arr=[1,2,3,4,5]; console.log(arr.slice(4,1)); console.log(arr.slice(-1,-5)); console.log(arr.slice(8,10));
splice()
splice()插入或删除数组元素的通用方法,是在原数组上操作,会修改原数组,同时原数组的元素索引值会相应的增加或减小;返回的是被删除元素组成的数组,如果被删除的个数为零,则返回空数组[]
第一个参数指定了要插入或删除的元素在数组中的位置,第二个参数指定了从指定位置开始的要删除的元素个数;如果省略了第二个参数,则从起点开始到数组结尾的所有的元素都被删除。
var arr=[1,2,3,4,5,6]; var returnVal=arr.splice(4); //returnVal=[5,6]; arr=[1,2,3,4]; returnVal=arr.splice(1,2); //returnVal=[2,3]; arr=[1,4]; returnVal=arr.splice(1,1); //returnVal=[4]; arr=[1];
插入元素
var arr=[1,2,3,4,5,6]; var returnVal=arr.splice(1,0,'a','b'); //returnVal=[]; arr=[1,'a','b',2,3,4,5,6]; returnVal=arr.splice(1,2,7,[8,9]); //returnVal=["a","b"]; arr=[1,7,[8,9],2,3,4,5,6];
push()与pop()
push():在数组的尾部添加一个或多个元素,并返回数组新的长度
var arr=[]; var returnVal=arr.push("2",3); //arr=[1, "2", 3], returnVal=2;
pop():在数组的尾部删除一个元素,并返回删除的元素
var arr=[1,2,3]; var returnVal=arr.pop(); //arr=[1, 2], returnVal=3;
两个方法都修改并替换了原数组
unshift()与shift()
unshift()与shift()方法类似于push()与pop(),只不过他是在数组头部进行插入或删除操作,同时已存在的元素的索引会跟着变得,不会出现稀疏数组
var arr=[1,2]; var returnVal=arr.unshift(3); //arr=[3,1,2], returnVal=3;
var arr=[1,2,3]; var returnVal=arr.shift(); //arr=[2,3], returnVal=1;
当一次性插入多个元素,与一个一个插入元素得到的结果是有区别的,如:
var arr=[1,2]; var returnVal=arr.unshift(4); //arr=[4,1,2], returnVal=3; returnVal=arr.unshift(5); //arr=[5,4,1,2], returnVal=4; returnVal=arr.unshift(6); //arr=[6,5,4,1,3], returnVal=5; var arr2=[1,2]; var returnVal2=arr2.unshift(4,5,6); //arr2=[4,5,6,1,2], returnVal2=5;
toString()
当然数组也有toString()方法,他与没有参数的join()方法一样返回字符串
var str=[1,"a",3].toString(); //str="1,a,3";