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。在原来的数组上改变。

 

posted @ 2017-01-13 14:27  忍冬。  阅读(372)  评论(0编辑  收藏  举报