今天來了解一下js中的復雜數據類型中引用類型的Array類型,也就是我們常說的數組。
一、數組的創建。
數組的創建有兩種方式。
1. 使用Array構造函數創建。
例如 : var num = new Array('rde','blue','gold') ; // 這樣表示創建了一個數組 ,里面有三個項目,中間用逗號隔開。
如果提前知道要傳入的項目數量,可以傳入需要數量項目的值。
例如: var num = new Array(20); // 表示創建了一個保存20個項目的數組。
函數內項目數量用length表示:如下所示
另外的話使用Array構造函數時可以省略new 操作符 :如下
2.使用字面量的方式創建。 例如: var num = ['red','blue','gold']; //該表示用字面量的方式創建了一個數組 num 里面保存了三個項目 分別是 red、blue、gold 。
創建一個空的數組 var num = []; //表示的是一個空數組。
在我們的數組中length 屬性是比較有特點的可以通過length來控制數組內項目。
var num = ['rde','blue','gold']; num.length=2; alert(num);
開始長度為3 ,后面賦值給長度為2.
結果第三個元素被排除了。
二 、各類官方數組方法的使用。
1. push() 此方法可以在數組的尾部添加任意數量的參數 修改后返回的是數組修改后的長度 注意:返回的是長度 並不是修改后的數組。
如下代碼:
var num = ['rde','blue','gold']; var num2 =num.push("one","two") alert(num2); //5
2.pop() 刪除數組末尾的數元素並且返回出來
例如下代碼
var num = ['rde','blue','gold']; var num2 =num.push("one","two"); var num3 =num.pop(); alert(num3); //two alert(num); // rde,blue,gold,one
3. unshift() 在數組前端添加任意數組並返回新的長度。
如下:
var num = ['rde','blue','gold']; var num2 =num.unshift("one","two"); alert(num2); //5 alert(num); // one,two,rde,blue,gold
在數組的前端加入了 兩個新的元素 , 返回了新的長度5.
4. reverse()
如下代碼:
var num = [1,2,3,4,5,6,7,8,9]; num.reverse(); alert(num); // 9,8,7,6,5,4,3,2,1
該方法會是數組中的元素進行反轉排序。
var num = ['one','two','three','four']; num.reverse(); alert(num); // four,three,two,one
5. sort () 方法
var num = [1,3,2,6,5,4,9,8]; num.sort(); alert(num); //1,2,3,4,5,6,8,9
可以將無序的數組排成有序。
如果想要按照數組大小排序的話可以如下做法:
var num = [1,36,2,6,21,41,9,8]; function s(a,b){ return a-b; } num.sort(s); alert(num); //1,2,6,8,9,21,36,41
只需要sort()方法內調用一個函數 。
6.slice() 此方法 基於原數組創建一個新數組 接受一個或者兩個參數 第一個參數為要返回的起始位置和結束位置。
var num = [1,2,3,4,5,6,7,8,9]; //定義了九個參數。 var num2 = num.slice(3); // 設置一個參數的情況 由於返回值是一個新的數組 所以要定義一個新的變量去接收。 alert(num); //1,2,3,4,5,6,7,8,9 alert(num2); //4,5,6,7,8,9 從第三個下標開始截取數組中的參數。
再來觀察一下兩個參數的情況。
var num = [1,2,3,4,5,6,7,8,9]; //定義了九個參數。 var num2 = num.slice(3,6); // 由於返回值是一個新的數組 所以要定義一個新的變量去接收。 alert(num); //1,2,3,4,5,6,7,8,9 alert(num2); //4,5,6 從下標3開始截取 截取到下標6 注意 第二個下標是不包含的 實際截取為6-1;
7.splice() 此方法可以稱得上書數組當中最強大的方法了。
使用的方式有3種。 1.刪除 2.插入 3.替換。
7.1 刪除
splice() 可以刪除任意數量的元素。 需要指定2個參數 第一個參數是要刪除的第一項位置 和要刪除的個數。
例如:
var num = [1,2,3,4,5,6,7,8,9]; //定義九個元素 num.splice(3,2); //從下標3開始刪除 刪除2個元素 alert(num);// 1,2,3,6,7,8,9
7.2 插入
splice() 可以向指定位置插入任意個數的元素 需要三個參數 第一個參數指定位置開始插入,第二個參數 需要刪除的個數(這里我們寫0)也就是不刪除任何一個 ,第三個值是需要插入的參數。
例如:
var num = [1,2,3,4,5,6,7,8,9]; //定義九個元素 num.splice(3,0,"一",'one'); // 從下標3開始插入 不刪除任何一個 插入新的參數為 一 和 one alert(num);// 1,2,3,一,none,4,5,6,7,8,9
7.3 替換
splice() 可以想指定位置插入你需要替換的參數 ,同時刪除你不需要的參數。
例如:
var num = [1,2,3,4,5,6,7,8,9]; //定義九個元素 num.splice(3,3,'40','50','60'); // 從下標為3的位置刪除3個元素插入3個元素替換原來的元素 。這里可以是替換多個參數。 alert(num);//1,2,3,40,50,60,7,8,9
8. indexOf() 位置方法。
在數組中查找你想要查找的元素,如果有當前元素 則返回該元素所在的下標 如果沒有則返回-1
例如:
var num = [1,2,3,4,5,6,7,8,9]; //定義九個元素 var num2=num.indexOf(5); //在該數組中查找5這個元素 並返回該元素的下標 alert(num);// 1,2,3,4,5,6,7,8,9 alert(num2);// 該元素的下標為 4
如果查找不到該元素 則返回-1.
例如:
var num = [1,2,3,4,5,6,7,8,9]; //定義九個元素 var num2=num.indexOf(100); //在該數組中查找100這個元素 改數組沒有該元素返回-1 alert(num);// 1,2,3,4,5,6,7,8,9 alert(num2);// 沒有改元素 返回 -1
如果設置了兩值。 第一個值為需要查找的元素 第二個值為查找該元素從下標幾開始查找第一個相同的元素。
例如:
var num = [1,2,3,4,5,6,7,8,9,5,7,1,2,4,5]; // 該元素中有3個 5這個元素。 var num2=num.indexOf(5,5); // 查找5這個元素從下標為5開始查找第一個元素5 alert(num);// alert(num2);// 9 返回的是查找到的該元素的下標
9.lastIndexOf() cho 從名字中可以看出是和indexOf相反的操作。
var num = [1,2,3,9,5,6,7,8,9,5,7,1,2,4,5]; // 該元素中有2個 9這個元素。 var num2=num.lastIndexOf(9,8); //查找9 這個元素 從下標0到下標8中找到最后一個下標為9的元素。 alert(num);// alert(num2);// 8
如果第二個值不寫就是在整個數組中找到最后的元素的下標。如果沒有該元素則返回-1.