06_javascript內建對象Array

JavaScript對象:

內建對象
宿主對象
自定義對象

內建對象:

Array
Data
Math(工具類)
RegExp(正則表達式)
Function
Events
包裝類:String、Number、Boolean

Array

數組(Array)
數組也是一個對象,它和我們普通對象功能類似,也是用來存儲一些值的;
不同的是普通對象是使用字符串作爲屬性名的,而數組時使用數字來作爲索引操作元素;

索引:從0開始的整數就是索引

數組的存儲性能比普通對象要好,在開發中我們經常使用數組來存儲一些數據。

創建數組

使用構造函數創建數組:
var arr = new Array();
使用構造函數創建數組時,可以同時添加元素,
將要添加的元素作爲構造函數的參數傳遞元素之間使用,隔開
var arr2 = new Array(10,20,30);

創建一個長度爲10的數組
arr2 = new Array(10);
console.log(arr2.length);//10
使用字面量來創建數組
語法:[]
  	var arr = [];
    	
使用字面量創建數組時,可以在創建時就指定數組中的元素
var arr = [1,2,3,4,5,10];

// 數組中的元素可以是任意的數據類型
arr = ["hello",1,true,null,undefined];
//也可以是對象
arr = [{name:"孫悟空"},{name:"沙和尚"},{name:"豬八戒"}];
// 也可以是一個函數
arr = [function(){alert(1)},function(){alert(2)}];
//數組中也可以放數組,如下這種數組我們稱爲二維數組
arr = [[1,2,3],[3,4,5],[5,6,7]];

使用typeof檢查一個數組時,會返回object
console.log(typeof arr);  //‘object’

向數組中添加元素

語法:數組[索引] = 值
	arr[0] = 10;

讀取數組中的元素

語法:數組[索引]
如果讀取不存在的索引,他不會報錯而是返回undefined

獲取數組的長度

可以使用length屬性來獲取數組的長度(元素的個數)

語法:數組.length

對於連續的數組,使用length可以獲取到數組的長度(元素的個數);
	對於非連續的數組,使用length會獲取到數組的最大的索引+1
	儘量不要創建非連續的數組

修改length:

如果修改的length大於原長度,則多出部分會空出來
如果修改的length小於原長度,則多出的元素會被刪除

向數組的最後一個位置添加元素

語法:數組[數組.length] = 值;
arr[arr.length] = 70;

遍歷數組

所謂的遍歷數組,就是將數組中所有的元素都取出來

for循環遍歷數組:
var arr = ["孫悟空","豬八戒","沙和尚","唐僧","白骨精"];	
for(var i=0 ; i<arr.length ; i++){
    console.log(arr[i]);
}
forEach()遍歷數組:
// 語法:
arrayName.forEach(function(value, index , obj){
    
})
    arrayName: 要遍歷的數組name
    value:     當前遍歷元素
    index:     正在遍歷的元素的索引
    obj:       就是正在遍歷的數組

這個方法只支持IE8以上的瀏覽器;IE8及以下的瀏覽器均不支持該方法,
所以如果需要兼容IE8,則不要使用forEach( )還是使用for循環來遍歷

var arr = ["孫悟空","豬八戒","沙和尚","唐僧","白骨精"];
arr.forEach(function(value , index , obj){
	console.log(value);
});

forEach()方法需要一個函數作爲參數
像這種函數,由我們創建但是不由我們調用的,我們稱爲回調函數;

數組中有幾個元素函數就會執行幾次,每次執行時,
瀏覽器會將遍歷到的元素以實參的形式傳遞進來,我們可以來定義形參,來讀取這些內容。

瀏覽器會在回調函數中傳遞三個參數:
	* 第一個參數,就是當前正在遍歷的元素
	* 第二個參數,就是當前正在遍歷的元素的索引
	* 第三個參數,就是正在遍歷的數組

數組中的方法:

push()(會改變原數組,末尾添加)
向數組的末尾添加一個或多個元素,並**返回數組的新的長度;

可以將要添加的元素作爲參數傳入,這樣這些元素將會自動添加到數組的末尾;
該方法會將數組新的長度作爲返回值返回

var arr = ["孫悟空","豬八戒","沙和尚"];
var result = arr.push("唐僧","蜘蛛精","白骨精","玉兔精");
console.log(arr);//孫悟空,豬八戒,沙和尚,唐僧,蜘蛛精,白骨精,玉兔精
console.log("result = "+result); //result = 7
pop()(會改變原數組,末尾刪除)
刪除數組的最後一個元素,並**將被刪除的元素作爲返回值返回。

var arr = ["孫悟空","豬八戒","沙和尚"];		
result = arr.pop();
console.log(arr);//["孫悟空","豬八戒"]
console.log("result = "+result);//result = 沙和尚
unshift()(會改變原數組,開頭添加)
向數組開頭添加一個或多個元素,並**返回新的數組長度;
向前邊插入元素以後,其他的元素索引會依次調整。

var arr = ["孫悟空","豬八戒","沙和尚"];	
arr.unshift("牛魔王","二郎神");
result = console.log(arr);//["牛魔王,二郎神,孫悟空,豬八戒,沙和尚"]
console.log("result = "+result);//result = 5
shift()(會改變原數組,開頭刪除)
刪除數組的第一個元素,**並將被刪除的元素作爲返回值返回

var arr = ["孫悟空","豬八戒","沙和尚"];	
result = arr.shift();
console.log(arr); //[ "豬八戒,沙和尚"]
console.log("result = "+result);//"result = 孫悟空"
concat()
連接兩個或多個數組,並將新的數組返回;
該方法不會對原數組產生影響

var arr = ["孫悟空","豬八戒","沙和尚"];
var arr2 = ["白骨精","玉兔精","蜘蛛精"];
var arr3 = ["二郎神","太上老君","玉皇大帝"];
var result = arr.concat(arr2,arr3,"牛魔王","鐵扇公主");
console.log("result = "+result);
// result = 孫悟空,豬八戒,沙和尚,白骨精,玉兔精,蜘蛛精,二郎神,太上老君,玉皇大帝,牛魔王,鐵扇公主
join()
該方法可以將數組轉換爲一個字符串;
該方法不會對原數組產生影響,而是將轉換後的字符串作爲結果返回;

在join()中可以指定一個字符串作爲參數,這個字符串將會成爲數組中元素的連接符;
如果不指定連接符,則默認使用,作爲連接符

arr = ["孫悟空","豬八戒","沙和尚","唐僧"];
result = arr.join("@");
// result = 孫悟空@豬八戒@沙和尚@唐僧
reverse()(該方法會直接修改原數組)
該方法用來反轉數組(前邊的去後邊,後邊的去前邊)
該方法會直接修改原數組

arr = ["孫悟空","豬八戒","沙和尚","唐僧"];
arr.reverse();
console.log(arr);// ["唐僧", "沙和尚", "豬八戒", "孫悟空"]
sort()(會影響原數組)
可以用來對數組中的元素進行排序;
也會影響原數組,默認會按照Unicode編碼進行排序

arr = ["b","d","e","a","c"];
arr.sort();

即使對於純數字的數組,使用sort()排序時,也會按照Unicode編碼來排序,所以對數字進排序時,可能會得到錯誤的結果。
我們可以自己來指定排序的規則,可以在sort()添加一個回調函數,來指定排序規則。
回調函數中需要定義兩個形參,瀏覽器將會分別使用數組中的元素作爲實參去調用回調函數;
使用哪個元素調用不確定,但是肯定的是在數組中a一定在b前邊;
瀏覽器會根據回調函數的返回值來決定元素的順序,如果返回一個大於0的值,
則元素會交換位置;如果返回一個小於0的值,則元素位置不變;
如果返回一個0,則認爲兩個元素相等,也不交換位置;
如果需要升序排列,則返回 a-b;
如果需要降序排列,則返回b-a。

arr = [5,4,2,1,3,6,8,7];
arr.sort(function(a,b){			
	//升序排列
	//return a - b;
	//降序排列
	return b - a;
});
console.log(arr);//[8, 7, 6, 5, 4, 3, 2, 1]
slice()
該方法從已有的數組中返回選定的元素。
返回一個新的數組,包含從 start 到 end (不包括該元素)的數組(左閉右開)

參數:
1.start:必需。規定從何處開始選取。
  如果是負數,那麼它規定從數組尾部開始算起的位置。
2.end:可選。規定從何處結束選取。
  該參數是數組片斷結束處的數組下標。
  如果沒有指定該參數,那麼切分的數組包含從 start 到數組結束的所有元素;
  如果這個參數是負數,那麼它規定的是從數組尾部開始算起的元素。

arr = ['z','b','y','n','m','p']
result = arr.slice(2,-2)
console.log("result = "+result);//"result = y,n"
console.log('arr = '+arr)//"arr = z,b,y,n,m,p"
發佈了61 篇原創文章 · 獲贊 0 · 訪問量 4329
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章