<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>js中的对象--Array</title>
<script type="text/javascript" src="tools/1.js"></script>
</head>
<body>
<script type="text/javascript">
//js中的数组相当于Java中数组与集合的综合,
//js数组的特点:长度可变,元素类型任意 ---相当于Java中的List<Object>arr=new ArrayList<Object>();
//3种声明数组的方法
var arr1 = [ 1, 5, true, "abc", 56 ];
var arr2 = [];
arr2[0] = 20;
arr2[1] = 2;
arr2[2] = "efg";
arr2[5] = 10;
var arr3 = new Array();
//println(arr1);
//println(arr2);
//concat 方法: 返回一个新数组,这个新数组是由两个或更多数组组合而成的
var a = arr1.concat("hello", "11aa", arr2);//把数组arr1和元素"hellp"及数组arr2连接成一个新的数组返回
println(a);//1,5,true,abc,56,hello,11aa,20,2,efg,,,10
//join方法: 返回字符串值,其中包含了连接到一起的数组的所有元素,元素由指定的分隔符分隔开来。
var str = arr1.join("-");
//
println(str);//1-5-true-abc-56
//pop 方法: 移除数组中的最后一个元素并返回该元素。---操纵队尾
var ar = [ 1, 23, 4 ];
var str = ar.pop();
println(str);//4
//push 方法: 将新元素添加到一个数组中,并返回数组的新长度值。
var ar = [ 1, 23, 4 ];
var len = ar.push("d");
var arr = [ 1, "ad", 2 ];
//println(len+": "+ar);//3: 1,23,d
len = ar.push(arr);//4 ----把整个参数(数组arr)当作一个元素加入ar,这样ar就变成二维数组
//println(len+": "+ ar);//4: 1,23,d,1,ad,2
//区别:arr1.concat(arr2)是把arr2中的每个元素分别取出来,一个个加入arr1中,arr1还是一维数组。
// ar.push(arr)是把arr整体当作一个元素加入到ar中,让ar成为二维数组。
//reverse 方法: 返回一个元素顺序被反转的 Array 对象。
//println( ar.reverse() );//1,ad,2,d,4,23,1
//shift 方法: 移除数组中的第一个元素并返回该元素。----操纵队首
arr1 = [ "a", "b", "c" ];
var str = arr1.shift();
println(str);//
println(arr1);//b,c
//slice 方法 (Array): 返回一个数组的一段。
arr1 = [ "a", "b", "c", 1, 3, 5, "d" ];
var b = arr1.slice(1, 4); //截取[1,4)左包含友不包含
println(arr1);//原样不变
println(b);//b,c,1
//排序
arr1.sort();
println(arr1);
arr1.sort(function(a, b) { //写自定义函数排序
//return -1;
return 1;
});
println("arr1 =" + arr1);// return -1:arr1 =1,3,5,a,b,c,d return 1:arr1 =d,c,b,a,5,3,1
println("<hr/>");
//splice 方法:(替换) 从一个数组中移除一个或多个元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。
arr1 = [ "a", "b", "c", 1, 3, 5, "d" ];
var ar = arr1.splice(2, 3, 10, 20, "hello", "xdy");//把数组arr1中从位置2开始的3个元素移除,并且在该移除位置依次添加如下元素:10,20,"hello","xdy",,该方法的返回值是被移除元素序列(数组)
println(ar);
println(arr1);
//unshift 方法: 将指定的元素插入数组开始位置, ☆返回的是新数组的长度(API有误)。 ---操纵队首
var len = arr1.unshift("aa");
println(len); //9
println(arr1);//aa,a,b,10,20,hello,xdy,5,d
</script>
<h3>用js数组来做一个栈或队列</h3>
<script type="text/javascript">
//队列:先进先出。 add加到队尾,,remove从队首移除
var que = [];
que.push("a");
que.push("b");
que.push("c");
println(que.shift());
println(que.shift());
println(que.shift());
//addFirst() removeLast() addLast() removeFirst()
</script>
<script type="text/javascript">
//把js中的Array包装成我们喜欢的队列或栈操作方式
Array.prototype.addFirst = function(element) {
return this.unshift(element);
};
Array.prototype.addLast = function(element) {
return this.push(element);
};
Array.prototype.removeFirst = function() {
return this.shift();
};
//测试
var que2 = [];
que2.addLast("文本内容1");
que2.addLast("文本内容2");
que2.addLast("文本内容3");
println(que2.removeFirst());
que2.addLast("文本内容4");
println(que2.removeFirst());
println(que2.removeFirst());
println(que2.removeFirst());
</script>
<script type="text/javascript">
//给js中的数组添加一个返回最大元素值的方法
Array.prototype.getMax = function() {
var max = 0;//初始化:第0位置的元素为最大值
for ( var i = 0; i < this.length; i++) {
if (this[max] < this[i]) { //注意,访问当前数组this中的元素的方式
max = i;
}
}
return this[max];
};
arr1 = [ 0, -3, 1, 30, 5, 15, 8 ];
println(arr1.getMax());
</script>
</body>
</html>