核心对象的连载(Array对象)
JavaScript的核心对象不多,但是要全部完全掌握,并且用的恰到好处确实不容易。在这里我将以《JavaScript技术开发手册》为蓝本,扩展JS中常用核心对象的知识点,并以理论结合实践来讲述一些枯燥无味知识点(之前还是要大家痛苦一下的是要对对象的基本概念熟悉下,最好的方法就是多用,多背),在每个对象介绍的最后我都会跟一些经常会用的到的例子给大家展示其对象的用武之地,但是仍然需要大家自己动手去debug,在关键的地方我会做出注释说明,其中有一部份原创的作品,如有更好的方案,还请大家多多指点,我想是对我的鞭策也是对大家的提高。
由于在研究Array对象(一般教程都是以Math对象开头的,不好意思,下面我会介绍Math对象的),所以首先我将介绍Array对象(以后的说明方式是按照以下的流程来说明:对象介绍-->对象常用属性和方法-->实例)。
数组:数组对象是一个对象的集合,里边的对象可以是不同类型的(想包含什么就包含什么)。数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置(既然是“位置”,就也是从零开始的啦)。
数组定义方法:
方式一:var 数组名 = new Array(); //这里是一个空数组
方式二:var 数组名 = new Array("Tony","Ufo0303","tangwangchao"); //直接初始化值,可以直接通过索引取出内部的值
说到这里,我不得不提下二维数组的概念,其二维数组的言下之意就是有两个维数,对吧,但是告诉大家一个不好的消息,就是在JavaScript中是没有二维数组这个概念的,只有通过模拟的方式来模拟出来,待会我会在跟帖中通过实例来说明这个问题。请大家继续关注...
属性:
除了所有对象都通用的一个prototype扩展属性外,此对象只有length属性,来说明数组的长度。
方法:
join() 用法:<数组对象>.join(<分隔符>);返回一个字符串,该字符串把数组中的各个元素串起来,用<分隔符>置于元素与元素之间。这个方法不影响数组原本的内容。
reverse() 用法:<数组对象>.reverse();使数组中的元素顺序反过来。如果对数组[1, 2, 3]使用这个方法,它将使数组变成:[3, 2, 1]。
slice() 用法:<数组对象>.slice(<始>[, <终>]);返回一个数组,该数组是原数组的子集,始于<始>,终于<终>。如果不给出<终>,则子集一直取到原数组的结尾。
sort() 用法:<数组对象>.sort([<方法函数>]);使数组中的元素按照一定的顺序排列。如果不指定<方法函数>,则按字母顺序排列。在这种情况下,80 是比 9 排得前的。如果指定<方法函数>,则按<方法函数>所指定的排序方法排序。<方法函数>比较难讲述,这里只将一些有用的<方法函数>介绍给大家。
1、创建Object对象来模拟;
<script language=javascript>
Arry = new Object;
Arry[0] = new Object;
Arry[1] = new Object;
Arry[0][0] = "ufo";
alert(Arry[0][0]);
</script>
2、通过数组嵌套来模拟;var 数组名=new [new Array[],new Array[]...];
<script language=javascript>
var ar = [[1,2,3],[4,5,6],[7,8,9]];
alert(ar[0][0]);
</script>
3、通过扩展对象来模拟;其实这个就是传说中的关联数组,其格式是{对象的属性:属性的值}
<script>
var ar={"Name":"JScript","Version":"5.3"}
alert("Name:"+ar.Name);
alert("Version:"+ar.Version);
</script>
下面是将数组转换成字符串的几种方法,大家如果有更加好的方案,请跟帖在后面,现谢过了。
方法一:
<script>
var a=new Array("abc","def","fff","sss")
//如何把上面的数组转换成字符串,以便下面正则使用
alert(""+a)
</script>
方法二:
<script>
var a=new Array("abc","def","fff","sss")
//如何把上面的数组转换成字符串,以便下面正则使用
alert(a.join(""))
</script>
方法三:
<script>
var a=new Array("abc","def","fff","sss")
//如何把上面的数组转换成字符串,以便下面正则使用
alert(a.toString())
</script>
经典数组例子:
1、数字排序
<script language="javascript">
var arr=[123,546,896,975,234,345,453,562,654,78,99,54];
var a2 = arr.sort(function(a,b){return b-a;}); //这个是降序排列,如果要升序,则改为a-b;
alert(a2);
</script>
2、判断数组中是否有重复值
<script>
var a=new Array("b,","a","b,");
a.sort();
for(var i=0;i<a.length;i++){
if(a[i] ==a[i+1]) alert(a[i]+"重复"); //通过遍历数组来实现;(但是效率实在是低下)
}
</script>
3、用数组来模拟简单的目录树
<script language="javascript">
var allType = new Array();
//数组的格式说明
//************************************************************
//alltype[] = new Array("自身ID" ,"父ID" , "自身名字" , "伸缩排版符");
//************************************************************
//奥迪的所有品牌
allType[0] = new Array( "3", "2", "A4", "--");
//奥迪A4的型号
allType[1] = new Array( "7", "3", "04款", "----");
allType[2] = new Array( "8", "3", "03款", "----");
allType[3] = new Array( "9", "3", "05款", "----");
allType[4] = new Array( "4", "2", "A6", "--" );
//奥迪A6的型号
allType[5] = new Array( "10", "4", "04款", "----");
allType[6] = new Array( "5", "2", "新A4", "--");
allType[7] = new Array( "6","2", "新A6", "--");
function getTree( PID )
{
var typeNO = allType.length;
var tree = "";
for (var i = 0 ;i < typeNO ; i++)
{
tree += "<div>";
tree += allType[i][3];
tree += allType[i][2];
tree += "</div>";
}
return tree;
}
document.write( getTree( 2 ) );
</script>