JS_高程5.引用类型(5)Array类型的操作方法
一.操作方法
1.concat()方法
基于当前数组中的所有项创建一个新数组。具体说,是先创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。在没有给concat()方法传递参数的情况下,它只是复制当前数组并返回副本。
eg:
1 var name=["lin","li","fang"]; 2 var name1=name.concat("zhao","zhou",["hao","cheng"]); 3 alert(name); 4 alert(name1);
注意:上面代码中,我把变量名设置为name,这样做不是很好,再下面的slice()如果还是使用name变量名的话,会出现问题,实现不了我们想要的效果:
2.slice()方法
基于当前数组中的一或多个项创建一个新数组。
(1)slice()只有一个参数的情况下,返回从该参数指定位置开始到当前数组末尾的所有项。
eg:
1 var colors=["red","green","blue","white"]; 2 var son1=colors.slice(1); 3 alert(son1);
使用name作为变量名的话,会出现下面的问题:
1 var name=["red","green","blue","white"]; 2 var name2=name.slice(1,3); 3 alert(name2);
(2)slice()有两个参数时,返回起始位置和结束位置之间的项(但是不包含结束位置的项。)
eg:
1 var colors=["red","green","blue","white"]; 2 var son1=colors.slice(1,3); 3 alert(son1);//输出green,blue
注意:如果slice()方法的参数中有一个是负数,则用数组的长度加上该数来确定相应的位置。
eg:
1 var colors=["red","green","blue","white"]; 2 var son1=colors.slice(-3,-1); 3 alert(son1);//输出green,blue
数组的长度为4, 4+(-3)=1,4+(-1)=3,所以slice(-3,-1)和slice(1,3)的结果是一样的。
3.splice()方法的主要用途是向数组中插入项,使用方式有以下3种:
(1)删除:可以删除任意数量的项,指定2个参数,要删除的第一项的位置和要删除的项数。
eg:
1 var colors=["red","green","blue","white"]; 2 var son1=colors.splice(0,2); 3 alert(colors);//输出blue,white 4 alert(son1);//输出red,green
splice()返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组。)
(2)插入:可以向指定文字插入任意数量的项,需要三个参数:起始位置,0(要删除的项数)和要插入的项,可以传入多个项。
eg:
1 var colors=["red","green","blue","white"]; 2 var son1=colors.splice(2,0,"pink","red"); 3 alert(colors);//red,green,pink,red,blue,white 4 alert(son1);//空数组
(3)替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,要需要指定三个参数:起始位置要删除的项数,和要插入的任意项,插入的项数不必与删除的项数相等。
eg:
1 var colors=["red","green","blue","white"]; 2 var son1=colors.splice(2,2,"pink"); 3 alert(colors);//red,green,pink,pink 4 alert(son1);//bule,white
小结思考:
这里需要注意的是,好像concat()和splice()方法都可以在一个数组后添加新的项,但是concat()方法是创建一个新的数组,而splice()方法是在原来的数组上进行改变。
eg:
1 var colors=["red","blue"]; 2 var colors1=colors.concat("green"); 3 alert(colors);//red,blue.注意这里原理的数组是不变的。 4 alert(colors1);//red,blue,green.这里返回的新的数组colors1。 5 var c=colors.splice(3,0,"green"); 6 alert(colors);//red,blue,green。在原来的数组上改变。