复合数据类型和简单数据类型是不同的,因为他不仅可以保存一个值。符合数据类型有两种:数组和对象。
- 数组(arryay):包含一个或多个其他的数据类型。
- 对象(object):包含一个对象的一个引用。主要包含三个:String,Date,Math
String对象
创建
- 显示创建:
var myString=new String("xq");
-
隐式创建:
var myString="xq";
方法 -
indexOf():查找并返回字符串的起始位置。
- lastIndexOf():查找并发挥字符串的结束位置。
- subString():返回字符串的输入的起始位置和结束位置的子字符串。 上面方法使用方法举例如下,这个例子用来返回姓名中的姓:
1 2 3 4 5 6 7 8
<body> <script type="text/javascript"> var name="hello, my name is xq, zhao." var indexOf=name.indexOf("xq"); var firstName=name.substring(indexOf+4); document.write(firstName); </script> </body>
结果如下:
1 | zhao. |
Date对象
创建
1 2 3 4 5 6 | <script type="text/javascript"> //创建当前日期 var today=new Date(); //创建任意的日期,参数不必要全部填入 var someDay=new Date("年","月","日","时","分","秒","微秒"); </script> |
注意:javascript中月份是从0开始的,因此,8代表九月份
方法
Date中有很多方法可以用来设置和获取时间的具体数值,下面用例子的形式介绍常用的方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <body> <script type="text/javascript"> //创建一个新的时间 var someDate=new Date("31 Jan 2003 11:59"); //获取设置的时间的细节 //获取分钟 document.write("分="+someDate.getMinutes()+"<br>"); //获取年份 document.write("年="+someDate.getFullYear()+"<br>"); //获取月份 document.write("月="+someDate.getMonth()+"<br>"); //获取日期 document.write("日="+someDate.getDate()+"<br>"); //设置分钟为33 someDate.setMinutes(33); //获取设置后的分钟 document.write("分="+someDate.getMinutes()+"<br>"); //设置日期为32 someDate.setDate(32); //获取设置日期后的时间 //获取月份 document.write("月="+someDate.getMonth()+"<br>"); //获取日期 document.write("日="+someDate.getDate()+"<br>"); //设置日期为加30天 someDate.setDate(someDate.getDate()+30); //获取设置日期后的时间 //获取月份 document.write("月="+someDate.getMonth()+"<br>"); //获取日期 document.write("日="+someDate.getDate()+"<br>"); </script> </body> |
运行结果如下:
1 2 3 4 5 6 7 8 9 | 分=59 年=2003 月=0 日=31 分=33 月=1 日=1 月=2 日=1 |
从以上结果可以看出,当设置日期为32的时候,javascript会自动判断当前月份不足32天,然后,满足当前月份后把剩余的天数加到下一个月份上。同样,当设置多少天以后,也会自动判断后增加到心相应的日期上,通过结果可以发现,javascript还可以自动判断2月份的天数。
Math对象
创建
Math对象无需初始化,可以直接使用。因此,也不能存放任何内容,而只是包含了一些方法。
方法
- round():四舍五入
- floor():向下舍入
- ceil():向上舍入
- random():产生一个0-1的随机数 下面通过示例具体介绍使用方法,该程序模拟投掷骰子所产生的点数:
1 2 3 4 5 6 7 8
<body> <script type="text/javascript"> //产生0-5之间的随机数 var random=Math.random()*5; //对随机数进行四舍五入,并+1,得到1-6之间的整数 var diceThrow=Math.round(random)+1; document.write("你投的点数为"+diceThrow); </script>
数组
javascript允许我们使用一个数组来存储和访问相关的数据。一个数组有点像一行单元格(元素)。每个单元格存储一个独立的数数据项。
创建
1 2 3 4 5 6 7 8 9 10 | //方法1.创建并且初始化 var myArray=new Array("1","2","3"); //方法2.创建一个空的数组 var myArray=new Array(); //填入数据 myArray[0]="1"; myArray[1]="2"; myArray[2]="3"; //方法3.简写创建并初始化数组数据 var myArray=["1","2","3"]; |
读取
1 2 | //读取第一个元素 myArray[0] |
数组对象的方法和属性
- slice():截取数组的一段
slice()拥有两个参数:片段中的第一个元素索引,它包含在截取片段中;片段中最后一个元素的索引,它不包含在片段中。例如要截取大小为5的数组的2,3,4个元素,需要指定的参数为1和4。但是最初的数组并未受到影响。 - concat():链接两个数组
Array对象的concat()方法允许链接数组。可以使用这个方法把两个或多个数组链接到一起,每个新数组在前面的数组结束的地方开始。 - join():数组和字符创之间的相互转换
当循环的读取某些数据的时候,把数据放到数组里是非常方便的。可是当需要把 数据转换到别的地方的时候,将数据转换成字符串是个不错的主意。可以用循环的方法把数组添加到字符串里面,其实,Array中的join()方法可以完成这一任务。这个方法需要一个字符串作为参数,这个字符串主要的用处是分割数组之间的元素。例如:1 2 3 4 5 6 7
<body> <script type="text/javascript"> var myArray=["xh","xq","xm"]; var string=myArray.join("-"); document.write(string); </script> </body>
结果如下:
1 | xh-xq-xm |
- sort():数组排序
sort()方法允许将数组中的数据项按照字母或数字顺序进行排序。1 2 3 4 5 6
<script type="text/javascript"> var myArray=["xh","xq","xm"]; myArray.sort(); var string=myArray.join("-"); document.write(string); </script>
结果为:
1 | xh-xm-xq |
在上一个例子中加入sort()后,从结果就可以看出。已经按照了字母顺序。