三、数组(Array)对象
JavaScript用数组Array来保存具有相同类型的数据。Array是JavaScript的对象,因此具有属性和方法。
新建数组:
(1) 新建一个长度为零的数组
var 变量名 = new Array();
(2) 新建一个长度为n的数组
var 变量名 = new Array(n);
(3) 新建一个指定长度的数组
var 变量名 = new Array(元素1,元素2,元素3,……);
var a1 = new Array(“a”, “b”, “c”, “d”);
var a2 = new Array(“m”, “n”);
var a3 = new Array(“X”, “Y”, “Z”);
var a4 = new Array(“A”, “B”, “C”);
var a5 = new Array(“L”, “M”, “N” , “O”);
var a5 = new Array(“L”, “M”, “N” , “O”);
var a7 = new Array(“X”, “Y”, “Z”,“C”,“B”);
数组常用属性和方法
属性或方法
|
意 义
|
示 例
|
constructor
|
数组对象的函数原型
|
a1.constructor 结果
function Array(){[native code]}
|
length
|
数组长度
|
var l = a1.length 结果1为4
|
prototype
|
添加数组对象的属性
|
|
concat(数组2,数组3,…)
|
合并数组
|
a1.concat(a3,a2) 结果a1为
数组a,b,c,d,x,y,z,m,n
|
join(分隔符)
|
将数组转换为字串
|
var s = a1.join(“-”) 结果s为“a-b-c-d”
|
pop()
|
删除最后一个元素,返回最后一个
|
var r1 = a1.pop();结果:a1为数组a,b,c ; r1为“d”
|
push(元素1,元素2,…)
|
添加元素,返回数组的长度
|
var r2 = a2.push(“o”,“p”,“q”);
结果 a2 为数组m,n,o,p,q
r2为5
|
shift()
|
删除第一个元素,返回第一个元素
|
var r3 = a3.shift();
结果 a3为数组y,z
r3 为“X”
|
unshift(元素1,元素2,…)
|
添加元素至数组开始处
|
a4.unshift(“I”,“J”,“K”)
结果a4为数组I,J,K,A,B,C
|
slice(开始位置,[结束位置])
|
从数组中选择元素组成新的数组
|
var r5 = a5.slice(1,3);
结果 r5 为数组M,N
|
splice(位置,多少[,元素1,元素2,……])
|
从数组中删除或替换元素
|
a5.splice(1,2) 结果a5为数组L,O
a6.splice(1,2, “I”,“J”,“K”)结果a6为数组L,I,J,K,O
|
sort(比较函数)
|
排序数组
|
参见例3-1
|
reverse()
|
倒序数组
|
a7.rewerse() 结果a7为数组B,C,Z,Y,X
|
四、字符串(String)对象
字符串对象是JavaScript最常用的内置对象,当使用字符串对象时,并不一定需要用关键字new。任何一个变量,如果它的值是字符串,那么改变量就是一个字符串对象。
1、使用字符串变量
var myString = “This is a sample”; 和 var myString = new String(“This is a sample”); 等效
2、字符串相加
var myString = “This is” + “a sample”;
3、在字符串中使用单引号、双引号及其他特殊字符
JavaScript的字符串既可以使用单引号,也可以使用双引号,但是前后必须一致。
4、比较字符串是否相等
直接使用逻辑比较符“= =”就可以了。
5、字符串与整数、浮点数之间的转换
将字符串转换为整数或浮点数,使用函数 parseInt(s,b) 或 parseFloat(s) 就可以了。其中s表示所要转换的字符串,b表示要转换成几进制的整数。
字符串对象的属性
属 性
|
意 义
|
示 例
|
constructor
|
字符串对象的函数原型
|
myString.constructor 结果
function String(){[native code]}
|
length
|
字符串长度
|
myString.length 结果17
|
prototype
|
添加字符串对象的属性
|
字符串变量名.prototype.新加属性名 = 自定义方法名
|
function newF() {……}
var mys = new String();
mys.prototype.newF = newF;
字符串对象中有关字符串转换为HTML元素的方法
anchor(“锚点名”)
|
产生HTML锚点
|
link(href字符串)
|
产生HTML链接
|
有关处理字符串内容的方法
方 法
|
意 义
|
示例var myString = “This is a sample”
|
charAt(位置)
|
字符串对象在指定位置处的字符
|
myString.charAt(2) 结果为“I”
|
charCodeAt(位置)
|
字符串对象在指定位置处的字符的Unicode值
|
myString.charCodeAt(2) 结果为“i”
|
indexOf(要查找的字符串)
|
要查找的字符串在字符串对象中的位置
|
myString.indexOf(“is”) 结果2
|
lastIndexof(要查找的字串)
|
要查找的字符串在字符串对象中的最后位置
|
myString.lastIndexOf(“is”) 结果5
|
subStr(开始位置[,长度])
|
截取字符串
|
myString.subStr(10,3) 结果“sam”
|
字符串对象.subString(开始位置,结束位置)
|
分隔字符串到一个数组中
|
myString.subStr(5,9) 结果“is a”
|
split([分隔符])
|
分隔字符串到一个数组中
|
var a=myString.split(“ ”)结果
a[0]= “This”,a[1]= “is”,a[2]= “a”,a[3]= “sample”
|
replace(需替代的字符串,新字串)
|
替换字符串
|
myString.replace(“sample”, “apple”)
结果 “This is a apple”
|
toLowerCase()
|
变为小写字母
|
myString.toLowerCase()结果“this is a sample”
|
toUpperCase()
|
变为大写字母
|
myString.toUpperCase()结果“this is a sample”
|
例4-1 检查字符串是否是有效的
目的:字符串对象中有关处理字串内方法的应用
<html>
<head>
<script language="JavaScript">
function isValidString(inputString) {
var validChars = "0123456789abcdefghijklmnopqrstuvwxyz_-";
var isValidString = true;
var aChar;
for(i=0;i<inputString.length && isValidString == true;i++) {
aChar = inputString.toLowerCase().charAt(i);
if(validChars.indexOf(aChar) == -1) {
isValidString = false;
}
}
return isValidString;
}
//测试isValidString函数
var aString1 = "abcd$gggg";
var aString2 = "_ab1-cd2_";
var aString3 = "12.34";
document.write(aString1+"是"+(isValidString(aString1)?"有效的":"无效的")+"字符串。<br>");
document.write(aString2+"是"+(isValidString(aString2)?"有效的":"无效的")+"字符串。<br>");
document.write(aString3+"是"+(isValidString(aString3)?"有效的":"无效的")+"字符串。<br>");
</script>
</head>
<body>
</body>
</html>
例4-2 检测输入参数是否在指定的两个数之间
目的:字符串与数字的转换
<script language="JavaScript">
function isRange(s,s1,s2) {
if(s1==null && s2==null) {
return true;
} else if((s1==null)&&parseFloat(s)>parseFloat(s2)) {
return false;
} else if((s2==null)&&parseFloat(s)< parseFloat(s1)) {
return false;
} else if(parseFloat(s)<parseFloat(s1)||parseFloat(s)>parseFloat(s2)) {
return false;
} else {
return true;
}
}
document.write(100+(isRange(100,0,200)?"在":"不在")+"0~200范围内。<br>");
document.write(100+(isRange(100,null,99)?"在":"不在")+"<=99范围内。<br>");
document.write(100+(isRange(100,50,null)?"在":"不在")+">=99范围内。");
</script>