var aValues = new Array(); var aValues = new Array(10); // 声明有 10 个项的 Array 对象 var arr = new Array(); arr[0]="thanks"; arr[1]="god"; arr[2]="its"; arr[3]="friday"; var aColors = new Array("red", "yellow", "blue");//直接用 value 声明数组 var arr2 = ["you","are","right"];//用字面量声明数组
js 中的数组可以动态扩大,例如:
var arr = [1,2,3]; alert(arr.length); // 等于 3 arr[15]=100; alert(arr.legth);// 等于16 //其中数组的 3..15 项是 undefined
据说js 数组中最多有 4,294,967,295 项
1.Array 的 toString() 和 valueOf() 方法
toString(), 和 valueOf() 返回的是用 , 连接的数组项的字符串
var arr = ["a","b","c"]; document.write(arr.toString());//返回 "a,b,c" document.write(arr.valueOf());//返回 "a,b,c"
2.Array 的 join() 方法
join() ,将数组中的项用 join 的参数连接成一个字符串
var arr = ["a","b","c"]; arr.join(","); // 返回与 toString(), valueOf() 相同 , "a,b,c" arr.join("*");//"a*b*c" arr.join(""); // 用空字符串连接数组项,这个比较有用可以用数组来实现,类似 java 的 StringBuffer 类, 提高 js 中字符串连接效率
join() 方法是将 Array 转换为 String 的方法,
对应的 String 类中的 split() 方法可以将 String 转为 Array,类如
var str = "red,blue,green"; var arr = str.split(","); // 将 String 转换为 Array document.write(arr.length);
2.Array 的 contact(),slice(), 方法
contact() 方法将内容添加的数组后面, 注意它返回新的数组,原 Array 内容不变。
var arr = ["you","are","right"]; var arr1 = arr.concat(["a","b"]); document.write(arr.toString());//you,are,right document.write("
"); document.write(arr1.toString());//you,are,right,a,b
slice() 返回数组片段, 可有有两个参数,1起始位置,2 结束位置 (不包括)。
如果只有一个参数从起始位置一直到结尾。
注意 slice() 也是返回新 Array
var arr = ["you","are","right", "a", "b", "c"]; var arr1 = arr.slice(1); var arr2 = arr.slice(2,4); document.write(arr.toString());//返回 you,are,right,a,b,c document.write("
"); document.write(arr1.toString());//返回are,right,a,b,c document.write("
"); document.write(arr2.toString());//返回right,a
3.Array 的 push(),pop() 方法,
Array 可以实现 Stack 结构,通过以上的两个方法。
push() 将内容添加到末尾
pop() 移除末尾项,并返回末尾项
例如:
var stack = ["rich", "maddy", "yuzhou"]; stack.push("flex"); stack.push("jade"); document.write(stack.toString());//rich,maddy,yuzhou,flex,jade document.write("
") var name = stack.pop(); document.write(name);//jade document.write("
") document.write(stack.toString());//rich,maddy,yuzhou,flex
4.Array 的 shift(),unshift() 方法,
shift() 移除并返回第一项
unshfit() 将传入项放到第一的位置,其余项向后移动
var stack = ["rich", "maddy", "yuzhou"]; var name = stack.shift(); document.write(stack.toString());//"maddy,yuzhou" document.write("
") document.write(name);//"rich" stack.unshift("flex"); document.write(stack.toString());//flex,maddy,yuzhou
用 push() 和 shift() 可以实现 queue 结构
5.Array 的 reverse(),sort() 方法,
reverse() 将数组项 反转
sort() 将数组项按字符数序 排序
var stack = ["rich", "maddy", "yuzhou"]; document.write(stack.toString());//rich,maddy,yuzhou document.write("
") stack.reverse(); document.write(stack.toString());//yuzhou,maddy,rich 注意对 Number 的 sort() 是按照字符串比较的 var stack = [10,2,15,5,6]; document.write(stack.toString());//10,2,15,5,6 document.write("
") stack.sort(); document.write(stack.toString());//10,15,2,5,6
6.Array 的 splice() 方法,
splice() 是比较复杂的一个方法
var stack = ["yuzhou","flex","rich","maddy","andy","grace","jade"]; document.write(stack.toString());//yuzhou,flex,rich,maddy,andy,grace,jade document.write("
") stack.splice(0,3);//从第一项开始删除 3个 document.write(stack.toString());//maddy,andy,grace,jade
var stack = ["yuzhou","flex","rich","maddy","andy","grace","jade"]; document.write(stack.toString());//yuzhou,flex,rich,maddy,andy,grace,jade document.write("
") stack.splice(1,0,"mike.d","cory");//从第二项,不删除,插入 "mike.d", "cory" document.write(stack.toString());//yuzhou,mike.d,cory,flex,rich,maddy,andy,grace,jade