曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 2905|回复: 0
打印 上一主题 下一主题

数组

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2011-12-14 12:39:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
创建数组
使用 new 来创建 Array() 对象,如:
var myarray = new Array( "first", "Second", "Third" );

声明一个含有 5 个元素的数组:
var myarray = new Array( 5 );

创建一个空数组:
var myarray = new Array();

给数组赋值:
myarray[0] = "first";
myarray[1] = "second";
myarray[2] = "third";

不使用 Array() 构造函数,采用简写方式:
var myarray = [1, 2, 3, 4, 5, 6];
var yourArray = ["first", "second", "third", "fouth"];

数组索引除了数字还可以是关键字或者变量:
anArray["price"] = 100.89;      //使用自定义关键字做索引

var Index = 0;
anArray[Index] = 78.98;      //使用变量做索引



数组的属性与方法

length 属性:
length 表示的是数组的长度:
[JavaScript] 纯文本查看 复制代码
var domain = ["welcome", "to", "groad", ".net"];
    document.write( domain.length );

返回结果为 4 。

使用 slice() 方法截取数组的一段
slice() 方法对于一个 Array 对象就如同 substring() 对于一个 String 对象。只要简单的告诉它我们想要截取哪些元素即可。这在许多场合都很有用,比如我们可以截取一个网址上的某个片段。

该方法有 2 个参数:
1. 片段中第一个元素的索引(会包含在片段中)。
2. 最后一个元素的索引(不会包含在片段中)。

示例代码:
[code=javascript]    <script type="text/javascript">
    var myUrl = new Array("http:", "//", "www.groad.net", "/bbs/", "post.php?", "fid=123");
   
    var sliceOfUrl = myUrl.slice(2, 5);
   
    document.write( sliceOfUrl[0] + "<br>" );
    document.write( sliceOfUrl[1] + "<br>" );
    document.write( sliceOfUrl[2] + "<br>" );
    </script>[/mw_shl_code]
运行输出:
www.groad.net
/bbs/
post.php?
由上可见,使用 slice() 不会影响到最初的数组,但如果需要,也可以使 slice() 的返回结果再赋值给最初的数组。


连接数组
我们可以将 2 个或多个数组连接起来,每个新数组在前面数组结束的地方开始:
[code=javascript]<script type="text/javascript">

var parents = ["Jani", "Tove"];
var children = ["Cecilie", "Lone"];
var family = parents.concat(children);
document.write(family);

</script>[/mw_shl_code]
运行输出:
Jani,Tove,Cecilie,Lone

数组和字符串之间的相互转换
当需要把数组中的数据传送到其他地方时,将这些数据转换成字符串可能是个很好的主意。虽然可以通过遍历数组然后将每个元素的值添加到字符串里,但我们没有必要这么麻烦,因为 Array 对象里有一个叫 join() 的方法可以完成该功能。这个方法需要一个字符串作为参考,这个字符串会被添加到每个元素的中间,当省略这个参考字符串时,只是简单的将数组中的元素用逗号相连,如下代码示例:
[code=javascript]<script type="text/javascript">

var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.write(fruits.join() + "<br />");
document.write(fruits.join("+") + "<br />");
document.write(fruits.join(" and "));

</script>[/mw_shl_code]
运行输出:
Banana,Orange,Apple,Mango
Banana+Orange+Apple+Mango
Banana and Orange and Apple and Mango

与 join() 方法相反的是 split() ,这个方法可以把字符串转换为数组,测试代码如下:
[code=javascript]<script type="text/javascript">
var lineUp = "www, groad, net";
var site = lineUp.split(', ');
document.write(site.length + "<br>");
document.write(site[0] + "<br>");
document.write(site[1] + "<br>");
document.write(site[2] + "<br>");
</script>[/mw_shl_code]
运行输出:
3
www
groad
net

数组排序
sort() 方法可以把数组中的数据项按字母或数字顺序进行排序:
[code=javascript]<script type="text/javascript">

var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.write(fruits.sort());

</script>[/mw_shl_code]
运行输出:
Apple,Banana,Mango,Orange
这些排序是按照 ASCII 码中的字符编号进行的。

如果要反向排序,那么可以使用 reverse() 方法:
[code=javascript]<script type="text/javascript">
var arrayToSort = new Array( "Cabbage", "Lemon", "Apple", "Pear", "Banana" );
var sortedArray = arrayToSort.sort();
document.write( sortedArray );
document.write ("<br />");

var reverseArray = sortedArray.reverse();
document.write( reverseArray[0] + "<br />" );
document.write( reverseArray[1] + "<br />" );
document.write( reverseArray[2] + "<br />" );
document.write( reverseArray[3] + "<br />" );
document.write( reverseArray[4] + "<br />" );
</script>[/mw_shl_code]
运行输出:
Apple,Banana,Cabbage,Lemon,Pear
Pear
Lemon
Cabbage
Banana
Apple
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-17 02:55 , Processed in 0.076816 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表