JavaScript数组的使用方法

熟悉强类型语言的你可能觉得有些迷惑
服务器君一共花费了361.617 ms进行了6次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

由于javascript是一种无类型语言,所以一个数组的元素可以具有任意的数据类型,同一个数组的不同元素,可以具有不同的类型,数组的元素设置可以包含其他数组,这样就可以创建一个复杂的数组了。

并且在这点上说javascript作为一种脚本语言不同于那种严格的面向对象的c++、c#、java了,具有更高的灵活性。

在javascript1.1和其后的版本中,数组是用构造函数Array()和运算符new来创建,可用以下的三种方式来创建javascript中的数组。

var a = new Array();
var b = new Array(5, 4, 3, "first", "test,string");
var c = new Array(20);
a[1.23] = "test";
document.write("a[1.23]="+a[1.23]);

程序输出:a[1.23]=test

相信每位从强类型的编程语言学习javascript时,绝对会以为上面这种操作感到惊讶。float数据也作数组的下标了,事实上并非如您所想。

javascript在你使用负数,浮点数,或布尔型,对象,其他值时,javascript会将它转换为一个字符串。用生成的字符串作为对象的属性名字,而不是定义了一个新的数组元素。

上面的实例事实就是为 a 创建了一个名为:"1.23"的属性。

var a = new Array();
var b = new Array(5, 4, 3, "first", "test,string");
var c = new Array(20);
a[1.23] = "test";
document.write("a.length = " + a.length + "<br />");
document.write("b.length = " + b.length + "<br />");
document.write("c.length = " + c.length + "<br />");
a[3]="Test";
document.write("<br />a[3]="+a[3]);
document.write("<br />a.length="+a.length);

程序输出:

a.length = 0
b.length = 5
c.length = 20
a[3]=Test
a.length=4

以上测试也很明确我们用整数作为数组的下标是才会真正为数组添加一个元素,这里用数组的长度来体现了javascript的数组中的奥妙。

通过设置数组的length属性能过截断数组的长度。

a.length=3;
if (a[3]==undefined)
{
	document.write("<br />在a.length="+a.length+"后,a[3]="+a[3]);
}
else
{
    document.write("<br />在a.length="+a.length+"后,a[3]="+a[3]);
}

这里测试我们的多维数组元素。javascript中实际上是不支持多维数组,但是我们将一个一维数组的元素再赋给其一个一维数组,这样就看起来就实现了多维数组了,但实际上他还是个一维数组,这和我们理解C语言的数组时的那种想法一样,但他们的实现机制是不一样的。

var g = new Array(3);
g[3] = a;
g[3][2] = "Test";
document.write("<br />g[3][2]="+g[3][2]);

数组join()方法:

for (var i=0; i<20; i++ )
{
	c[i]=i;
	document.write("<br />c[i]="+c[i]);
}
document.write("<br />c的元素join()方法后是:"+c.join());

数组的reverse()方法:

c.reverse();
document.write("<br />c的元素在reverse()方法再join()后的结果是:"+c.join("|"));

concat()方法的测试:

var h = new Array(1,2,3);
h = h.concat([4,5]);

但是concat函数不会递归地展开一个元素为数组的数组。

h = h.concat(6,7,[9,[10,20]]);
document.write("<br />h.length="+h.length+"<br />"+h);
document.write("h[8]="+h[8]);

slice()方法:返回的数组包含有第一个参数指定的元素和那个元素开始到第二个参数指定的元素为止的元素但不包含第二个参数所指定的元素。

document.write("<br>h.slice(4,5)="+h.slice(4,5));
document.write("h.slice(5,9)="+h.slice(5,9))

splice()方法是插入或删除数组元素通用的方法。splice函数第一个参数指定了要插入或删除的元素在数组中的位置。第二个参数指定了要从数组中删除的元个数,在第二参数之后可以有任意多个参数,它们指定的是从第一个参数指定的位置处插入的元素。第一个元素及后续元素,做出相应的移动。

document.write("<br />h.splice(8,1)后的h为::"+h.splice(8,1));
//document.write("<br />h.splice(8,0,'a','b','Test')后的h为::"+h.splice(8,0,'a','b','Test'));
h.splice(7,0,'a','b','Test');
document.write("<br />h.splice(7,0,'a','b','Test')后的h为:"+h);

javascript中的数组作为堆栈时和php类似,这点有趣更有用。以下是作为堆栈是使用的小实例:

push方法是将一个或多个新元素附加到数组的尾部,然后返回数组的新长度。pop将删除数组的最后一个元素,坚守数组的长度,返回他删除的值。

var stack = new Array();
stack.push(1,2);
document.write("<br />stack的元素是:"+stack);
document.write("<br />stack.length="+stack.length);
document.write("<br />stack.pop()返回的结果是:"+stack.pop());
document.write("<br />stack.length="+stack.length);

以下是作为队列使用的小实例:

unshift方法将一个或多个元素添加到数组元素的头部,然后把已有的元素移动到下标最大的位置已腾出空间 ,它返回的是主族的新长度。

方法shift是删除并返回数组的第一个元素,然后将后面的所有元素都向前移动以填补第一个元素留下的空白。

var list = [];
list.unshift(6,2);
document.write("<br >list的内容为:"+list);
document.write("<br />list的shift方法是:"+list.shift());

此外就剩下,我们在java中熟悉的toString()方法了:

document.write(c.toString());

说白了,其实数组的toString()方法和无参数的join()的效果是完全相同。

OK,就说到这里。

本文地址:http://www.nowamagic.net/librarys/veda/detail/464,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/464

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《深入理解计算机系统(原书第2版)》 布莱恩特(Randal E.Bryant) (作者), 奥哈拉伦(David R.O'Hallaron) (作者), 龚奕利 (译者), 雷迎春 (译者)

《深入理解计算机系统》从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统级I/O、网络编程、并发编程等。书中提供子大量的例子和练习题,并给出部分答案,有助于读者加深对正文所述概念和知识的理解。

更多计算机宝库...