JavaScript数组
1什么是JavaScript数组
数组是值的有序集合
javascript数组是无类型的;数组元素可以是任意类型,并且同一个数组的不同元素也可能有不同的类型。
每个值叫做一个元素,而每个元素在数组中有一个位置
2调用构造函数Array()是创建数组的另外一种方法。可以用三种方式调用构造函数。
(1)调用时没有参数:
var a = new Array();该方法创建一个没有任何元素的空数组,等同于数组直接量[]。
(2)调用时有一个数值参数,它指定长度:
var a = new Array(10)
当预先知道所需元素个数时,这种形式的Array()构造函数可以用来预分配一个数组空间。
(3)显示指定一个或多个数组元素或者数组的一个非数值元素:
var a = new Array(5,4,3,2,1,“test”);
以这种形式,构造函数的参数将会成为新数组的元素。使用数组字面量比这样使用Array()构造函数要简单多了。
3数组元素的读和写
使用[]操作符来访问数组元素中的一个元素。数组的引用位于方括号的左边。方括号中是一个返回非负整数值的任意表达式。使用该语法既可以读,也可以写数组的一个元素。
1.通过指定数组名以及索引号码,你可以访问某个特定的元素。Eg:
mycars [ 0 ]
2. 如需修改已有数组中的值,只要向指定下标号添加一个新值即可:Eg:mycars[0]=“Opel”;
3数组长度
定义:length 属性可设置或返回数组中元素的数目。(从1开始)
数组的 length 属性总是比数组中定义的最后一个元素的下标大 1。对于那些具有连续元素,而且以元素 0 开始的常规数组而言,属性 length 声明了数组中的元素的个数。
数组的 length 属性在用构造函数 Array() 创建数组时被初始化。给数组添加新元素时,如果必要,将更新 length 的值。
设置 length 属性可改变数组的大小。如果设置的值比其当前值小,数组将被截断,其尾部的元素将丢失。如果设置的值比它的当前值大,数组将增大,新的元素被添加到数组的尾部,它们的值为 undefined。
eg:[].length ==0
[1,2,3].length ==3
4检测
1.运用instanceof运算符来判断一个对象是不是数组
instanceof 是一个二元运算符,左边操作数是一个对象,不是的话返回false,右边操作数是一个函数对象或者函数构造器,不是的话返回false。原理是通过判断左操作数的对象的原型链上是否具有右操作数的构造函数的prototype属性。
eg:arr instanceof Array
2.可以使用Array.isArray(arr)
这个ES5新增的一个Array方法,该方法是Array对象的一个静态函数,用来判断一个对象是不是数组。
5数组元素的添加和删除
添加
a = [] //开始是一个空数组
a[0] = “zero”; //然后向其中添加元素
a[1] = “one”;
也可以使用push()方法在数组末尾增加一个或多个元素;
a = [];
a.push(“zero”);
a.push(“one”,”two”) ==>a=[“zero”,”one”,”two”]
删除
使用delete运算符 eg:delete arr[2];
6push()
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
7pop()
pop() 方法用于删除并返回数组的最后一个元素。
语法 :
arr.pop() //返回值 arr的最后一个元素。
8join()
join()方法将数组中所有元素都转化为字符串并且连接在一起,返回最后生成的字符串。可以指定一个可选的字符串在生成的字符串中来分隔数组的各个元素。如果不指定分隔符,默认使用逗号。
var arr = [1,2,3];
a.join(); ==>1,2,3
a.join(“ ”); ==>1 2 3
a.join(“.”); ==>1.2.3
a.join(“\\”); ==>1\2\3
9reverse()
将数组中元素的顺序颠倒,返回逆序的数组。
var a = [1,2,3]
a.reverse(); ==>a变为[3,2,1]
10sort()
将数组中的元素进行排序,并且返回排序后的数组。
语法:
arr.sort(sortby)(数字也是按字母表排序,因此只能自定义函数排序!)
sortby 可选。规定排序顺序。必须是函数。
若不带参数调用sort(),将按字母表进行排序。
Eg:var a = [“aa”,”cc”,”bb”];
a.sort();
var s = a.join(“,”);
如果数组包含undefined值,将放到数组尾部。
11concat()
concat() 方法合并两个数组,并返回合并后的新数组。
var arr = new Array(3)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
var arr2 = new Array(3)
arr2[0] = "James"
arr2[1] = "Adrew"
arr2[2] = "Martin"
document.write(arr.concat(arr2))
12slice()
slice()方法返回指定数组的一个片段或子数组,它的两个参数分别指定片段的开始和结束的位置(不包含该元素)。
var a = [1,2,3,4,5];
a.slice(0,3); ==>[1,2,3]
a.slice(3); ==>[4,5]
a.slice(1,-1); ==>[2,3,4] 参数-1指定为最后一个元素
a.slice(-3,-2); ==>[3]
13 splice()
splice() 方法用于插入、删除或替换数组的元素。并返回删除的部分数组。
语法:
arr.splice(index,howmany,element1,.....,elementX)
不同于slice(),concat();splice()会修改调用的数组。
var a = [1,2,3,4,5,6,7,8]
a.splice(4); ==>返回[5,6,7,8] 数组a变为[1,2,3,4]
a.splice(1,2); ==>返回[2,3] a是[1,4,5,6,7,8]
var a = [1,2,3,4,5]
a.splice(2,0,'a','b'); 返回[], a是[1,2,'a','b',3,4,5]
a.splice(2,2,33,3);
14 unshift()和shift()
类似于push()和pop(),不一样的是unshift()和shift()是在数组的头部而非尾部进行元素的插入和删除操作。unshift()在数组的头部添加一个或多个元素,最后返回数组新的长度。shift()删除数组的第一个元素并将其返回。