今天来了解一下js中的复杂数据类型中引用类型的Array类型,也就是我们常说的数组。
一、数组的创建。
数组的创建有两种方式。
1. 使用Array构造函数创建。
例如 : var num = new Array('rde','blue','gold') ; // 这样表示创建了一个数组 ,里面有三个项目,中间用逗号隔开。
如果提前知道要传入的项目数量,可以传入需要数量项目的值。
例如: var num = new Array(20); // 表示创建了一个保存20个项目的数组。
函数内项目数量用length表示:如下所示
另外的话使用Array构造函数时可以省略new 操作符 :如下
2.使用字面量的方式创建。 例如: var num = ['red','blue','gold']; //该表示用字面量的方式创建了一个数组 num 里面保存了三个项目 分别是 red、blue、gold 。
创建一个空的数组 var num = []; //表示的是一个空数组。
在我们的数组中length 属性是比较有特点的可以通过length来控制数组内项目。
var num = ['rde','blue','gold']; num.length=2; alert(num);
开始长度为3 ,后面赋值给长度为2.
结果第三个元素被排除了。
二 、各类官方数组方法的使用。
1. push() 此方法可以在数组的尾部添加任意数量的参数 修改后返回的是数组修改后的长度 注意:返回的是长度 并不是修改后的数组。
如下代码:
var num = ['rde','blue','gold']; var num2 =num.push("one","two") alert(num2); //5
2.pop() 删除数组末尾的数元素并且返回出来
例如下代码
var num = ['rde','blue','gold']; var num2 =num.push("one","two"); var num3 =num.pop(); alert(num3); //two alert(num); // rde,blue,gold,one
3. unshift() 在数组前端添加任意数组并返回新的长度。
如下:
var num = ['rde','blue','gold']; var num2 =num.unshift("one","two"); alert(num2); //5 alert(num); // one,two,rde,blue,gold
在数组的前端加入了 两个新的元素 , 返回了新的长度5.
4. reverse()
如下代码:
var num = [1,2,3,4,5,6,7,8,9]; num.reverse(); alert(num); // 9,8,7,6,5,4,3,2,1
该方法会是数组中的元素进行反转排序。
var num = ['one','two','three','four']; num.reverse(); alert(num); // four,three,two,one
5. sort () 方法
var num = [1,3,2,6,5,4,9,8]; num.sort(); alert(num); //1,2,3,4,5,6,8,9
可以将无序的数组排成有序。
如果想要按照数组大小排序的话可以如下做法:
var num = [1,36,2,6,21,41,9,8]; function s(a,b){ return a-b; } num.sort(s); alert(num); //1,2,6,8,9,21,36,41
只需要sort()方法内调用一个函数 。
6.slice() 此方法 基于原数组创建一个新数组 接受一个或者两个参数 第一个参数为要返回的起始位置和结束位置。
var num = [1,2,3,4,5,6,7,8,9]; //定义了九个参数。 var num2 = num.slice(3); // 设置一个参数的情况 由于返回值是一个新的数组 所以要定义一个新的变量去接收。 alert(num); //1,2,3,4,5,6,7,8,9 alert(num2); //4,5,6,7,8,9 从第三个下标开始截取数组中的参数。
再来观察一下两个参数的情况。
var num = [1,2,3,4,5,6,7,8,9]; //定义了九个参数。 var num2 = num.slice(3,6); // 由于返回值是一个新的数组 所以要定义一个新的变量去接收。 alert(num); //1,2,3,4,5,6,7,8,9 alert(num2); //4,5,6 从下标3开始截取 截取到下标6 注意 第二个下标是不包含的 实际截取为6-1;
7.splice() 此方法可以称得上书数组当中最强大的方法了。
使用的方式有3种。 1.删除 2.插入 3.替换。
7.1 删除
splice() 可以删除任意数量的元素。 需要指定2个参数 第一个参数是要删除的第一项位置 和要删除的个数。
例如:
var num = [1,2,3,4,5,6,7,8,9]; //定义九个元素 num.splice(3,2); //从下标3开始删除 删除2个元素 alert(num);// 1,2,3,6,7,8,9
7.2 插入
splice() 可以向指定位置插入任意个数的元素 需要三个参数 第一个参数指定位置开始插入,第二个参数 需要删除的个数(这里我们写0)也就是不删除任何一个 ,第三个值是需要插入的参数。
例如:
var num = [1,2,3,4,5,6,7,8,9]; //定义九个元素 num.splice(3,0,"一",'one'); // 从下标3开始插入 不删除任何一个 插入新的参数为 一 和 one alert(num);// 1,2,3,一,none,4,5,6,7,8,9
7.3 替换
splice() 可以想指定位置插入你需要替换的参数 ,同时删除你不需要的参数。
例如:
var num = [1,2,3,4,5,6,7,8,9]; //定义九个元素 num.splice(3,3,'40','50','60'); // 从下标为3的位置删除3个元素插入3个元素替换原来的元素 。这里可以是替换多个参数。 alert(num);//1,2,3,40,50,60,7,8,9
8. indexOf() 位置方法。
在数组中查找你想要查找的元素,如果有当前元素 则返回该元素所在的下标 如果没有则返回-1
例如:
var num = [1,2,3,4,5,6,7,8,9]; //定义九个元素 var num2=num.indexOf(5); //在该数组中查找5这个元素 并返回该元素的下标 alert(num);// 1,2,3,4,5,6,7,8,9 alert(num2);// 该元素的下标为 4
如果查找不到该元素 则返回-1.
例如:
var num = [1,2,3,4,5,6,7,8,9]; //定义九个元素 var num2=num.indexOf(100); //在该数组中查找100这个元素 改数组没有该元素返回-1 alert(num);// 1,2,3,4,5,6,7,8,9 alert(num2);// 没有改元素 返回 -1
如果设置了两值。 第一个值为需要查找的元素 第二个值为查找该元素从下标几开始查找第一个相同的元素。
例如:
var num = [1,2,3,4,5,6,7,8,9,5,7,1,2,4,5]; // 该元素中有3个 5这个元素。 var num2=num.indexOf(5,5); // 查找5这个元素从下标为5开始查找第一个元素5 alert(num);// alert(num2);// 9 返回的是查找到的该元素的下标
9.lastIndexOf() cho 从名字中可以看出是和indexOf相反的操作。
var num = [1,2,3,9,5,6,7,8,9,5,7,1,2,4,5]; // 该元素中有2个 9这个元素。 var num2=num.lastIndexOf(9,8); //查找9 这个元素 从下标0到下标8中找到最后一个下标为9的元素。 alert(num);// alert(num2);// 8
如果第二个值不写就是在整个数组中找到最后的元素的下标。如果没有该元素则返回-1.