数组的介绍
数组的概念
在实际开发中,总是会面临大量数据存储的问题。JavaScript语言不像C/C++那样适用于数据结构的设计,因此需要系统内部提供针对大量数据存储的工具,数组因此而产生。JavaScript数组中的目标是能组织存储各种各样的数据,并且访问方式和其他语言一样,特别是能混合存储类型不相同的数据。
数组的概念
JavaScript数组是指将多个数据对象编码存储,提供一致的存取方式的集合。注:与其他语言不同的是,JavaScript的数组元素的数据类型可以不相同。
数组元素
是指存储在数组中并赋予唯一索引的数据段。
各元素的数据类型可以是任意有效的JavaScript数据类型,元素按添加进数据的顺序存储于数组中。
创建数组
-
创建一个空数组
数组在创建时可以不包含任何元素数据,即空数组。创建后返回一个数组对象,使用该对象往数组中添加元素。语法如下:
var obj = new Array();
上述语句将创建一个空数组,变量obj引用创建后的数组对象,通过此变量可以操作数组,Array()为数组对象的构造函数。 -
通过指定数目长度创建数组:在创建数组时可以指定数组的元素长度,通过这种方式可以创建一个有指定元素个数的数组对象,语法如下:
var obj = new Array(size);
size指明新建的数组有多少个元素。数组对象的length将被设置为size,仅指定长度但没有实际填空元素及其数据的数组将得不到数据存储空间。 -
通过指定数组元素创建数组:新建的数组将包含创建时指定的元素,通常用在数据已经准备就绪的场合下;语法如下:
var obj = new Array(元素1,元素2,···,元素N);<script type="text/javascript"> var obj = new Array("peter","tom","vicky","jet"); alert(obj); </script>
-
直接创建数组:JavaScript创建数组的另一种简便的方式是使用"[ ]"运算符直接创建数组,数组的元素也是创建时被指定。这种方法的目标也是创建数组,与前面的方法相比仅仅是语法上的不同。
var obj = [元素1,元素2,···,元素N];
<script type="text/javascript">
var obj = ["peter","tom","vicky","jet"];
alert(obj);
</script>
数组元素的基本操作
- 读取数组元素:读取数组的元素最简单的方法就是使用"[ ]“运算符,使用”[ ]“可以读取一个数组元素
语法:数组名称[下标索引]
目标元素通常由下标索引决定,例如:读取第一个元素为"数组名称[0]”,以此类推;
<script type="text/javascript">
var name = new Array("peter","tom","vicky","jet");
var name = name[1];
</script>
- 添加数组元素:JavaScript的数组可以动态添加新元素,也可以动态删除原有的元素,添加新元素通常使用Array对象的push方法,push方法是将新元素添加到数组的尾部;使用unshift可以将指定个数的新元素插入数组的开始位置,形成新的数组。添加数组的一般形式:
<script type="text/javascript">
var student = new Array();
student.push("lily");
</script>
也可以使用"[ ]"运算符指定一个新下标来添加新元素,新元素添加到指定的下标处。如果指定的下标超过数组长度,数组将被扩展为新下标指定的长度。
3. 删除数组元素:通常使用delete运算符删除一个指定的元素,如果需要删除全部元素只需要删除数组对象即可:
delete 数组名[下标]
<script type="text/javascript">
var name = new Array("peter","tom","vicky","jet");
delete name[0]
</script>
- 数组元素的个数
数组对象的lengt属性指示了数组元素的个数
通过设定length属性可以指定数组的长度
在得知长度的情况下可以方便的遍历整个数组,读取数组元素个数信息的方法如下
<script type="text/javascript">
var obj = new Array(1,2,3);
var count = obj.length;
document.write(count);
</script>
尽管指定了数组的length属性,真正的有效元素只包含已经存入数据的元素,其他的没有真正数据的元素仍为空。
<script type="text/javascript">
var name = new Array("peter","tom","vicky","jet");
name[name.length] = 5;
name.concat("Lily");
name[6] = "Leysly";
for(n in name){
document.write(name[n]);
}
</script>
数组对象的常见操作
- 将数组转化为字符串:toString方法将数组表示为字符串,各个元素按顺序排列组合成为字符串返回。
对象名.toString([radix]);
radix为可选参数,表示进制。当对象是数字对象时,该参数起作用。对象名是数组对象变量名,方法执行后各元素以","隔开按顺序加入字符串中。 - 将数组元素连接成字符串:可以使用join方法将各元素组合成字符串,连接符合由用户指定
数组名.join(分割符);
分隔符必选项,是一个字符串对象作为元素间的分隔字符串 - 删除最后一个元素:pop方法的作用是移除数组末端的一个元素。delete运算符删除指定的元素,pop方法删除最后一个元素后还将其返回
数组名.pop(); - 添加元素生成新的数组:concat方法可以将多个数组的元素连接在一起成为新的数组,新数组中的元素按连接时的顺序排列。当需要合并多个数组时,此时比较方便;
数组名.concat([item,[item2,[item3,[···,[itemN]]]]]); - 删除、替换、插入数组:splice方法的作用是从数组中移除一个或多个元素,剩下的元素组成一个数组。移除的元素组成另一个数组并返回它的引用。同时,原数组可以在移除的开始位置处顺带插入一个或多个新元素,达到修改替换数组元素的目的。
数组名.splice(start,deletecount,[item1,[item2,[···,[itemN]]]]);
start:必选项。表示从数组中剪切的起始位置下标索引号。
deletecount:必选项。表示将从数组中切去的元素个数。
item:可选项。表示切取时插入原数组切入点开始处的一个或多个元素,要求为有效的JavaScript。 - 颠倒数组元素的顺序:可以使用reverse方法将一个Array对象中所有元素的次序反转,然后返回元素顺序反转后的Array对象的引用。
数组名.reverse(); - 数组元素进行排序:Array对象的sort方法可以将一个数组中的所有元素排序。执行是先将调用该方法的数组中的元素按用户指定的方法进行排序,排序后的所有元素构成一个新数组并返回之。通常用来对数组排序。
数组名.sort([sortfunction]);
sortfunction:可选项。用来确定元素顺序的函数名称。如果这个参数被省略,那么元素将按照ASCII字符顺序进行升序排序。
负值:表示传给sortfunction两个实参中第一个值比第二个值小。
正值:表示传给sortfunction两个实参中第一个值比第二个值大。
零:表示传给sortfunction两个实参中第一个值比第二个值相等。
<script type="text/javascript">
var name1 = new Array("peter","tom","vicky","jet");
var name2 = ["Lily","Leysly"];
name1.concat(name2);
for(n in name1)
{
document.write(name1[n] + ",");
}
name1 = name1.reverse();
document.write("<br />" + name1.join("-"));
name1.splice(1,2);
document.write("<br />" + name1.join(","))
</script>