1.數(shù)組的概念
用于保存一組數(shù)據(jù)的集合。
數(shù)組的定義格式: 中括號(hào)或者new定義,里面每一個(gè)元素結(jié)束的時(shí)候使用一個(gè)逗號(hào)隔開(kāi),最后一個(gè)元素可以不使用逗號(hào)結(jié)尾。
2.數(shù)組的申明
2.1 var a = [];
2.2 var a = new Array();
- instanceof 查看某個(gè)變量是否是某個(gè)數(shù)據(jù)類(lèi)型的實(shí)例。
4.數(shù)組保存數(shù)據(jù)的格式
嚴(yán)格意義上來(lái)說(shuō)數(shù)組可以保存任意格式的數(shù)據(jù)。
如果數(shù)組中保存的還是一個(gè)數(shù)組,那么這個(gè)數(shù)組叫做多維數(shù)組。
var a =[
[[1,2,3],2,3],
[4,3,2],
[8,2,7]
];
5.數(shù)組的鍵
數(shù)組的每一個(gè)元素都是由鍵與值組成。
[1,2,3,4,5];
[
0 => 1,
1 => 2,
2 => 3,
3 => 4,
4 => 5,
]
['a','b','c']
[
0 => 'a',
1 => 'b',
2 => 'c',
]
數(shù)組的鍵是從0 開(kāi)始的,是一個(gè)遞增的數(shù)值隊(duì)列。
Object.keys() 獲取某一個(gè)數(shù)組所有的鍵。返回的也是一個(gè)數(shù)組,這個(gè)數(shù)組是由原數(shù)組的鍵組成的。當(dāng)然這個(gè)數(shù)組也有自己的鍵。
數(shù)組所有的鍵都是字符串格式的,只是看起來(lái)有點(diǎn)像數(shù)字格式,這個(gè)是和對(duì)象是一樣的。對(duì)象所有的鍵也都是字符串格式的。
在獲取數(shù)組的某一個(gè)值的時(shí)候,鍵名首先會(huì)轉(zhuǎn)化為整形,然后整形轉(zhuǎn)化字符串。如果是帶有小數(shù)點(diǎn)后面數(shù)字的小數(shù)就不行了。
5.數(shù)組的訪問(wèn)形式
oDiv.style.display
oDiv['style']['display']
這個(gè)是對(duì)象的訪問(wèn)形式,不是數(shù)組的。
數(shù)組只能使用【】的形式進(jìn)行訪問(wèn)。
arr[數(shù)字]
arr[變量]
數(shù)組也支持存放不是數(shù)字鍵的元素,但是這個(gè)元素是按照對(duì)象的格式存放的,不計(jì)算在數(shù)組的元素個(gè)數(shù)中??梢允褂脤?duì)象的方式獲取,也可以使用數(shù)組的方式獲取。
arr['name'] = 'zhangsan';
delete 刪除一個(gè)對(duì)象的屬性。
也能夠刪除數(shù)組的元素,但是刪除之后元素的值刪除了,但是數(shù)組的長(zhǎng)度不會(huì)發(fā)生變化。也就是length不會(huì)改變。length
數(shù)組中最重要的一個(gè)屬性,表示數(shù)組中元素的個(gè)數(shù)。這個(gè)length是動(dòng)態(tài)變化的。數(shù)組元素增加的時(shí)候,length會(huì)自動(dòng)變大,元素減少的時(shí)候,length會(huì)自動(dòng)的減少。如果手動(dòng)設(shè)置length,那么數(shù)組也會(huì)發(fā)生變化。
數(shù)組的鍵是使用32為2進(jìn)制來(lái)保存的,所有最大值是2^32-1;
也就是數(shù)組最多只能保存2^32-1個(gè)值。
數(shù)組的元素可以是不連續(xù)的,但是length總是比最大的鍵名大1.
沒(méi)有保存數(shù)據(jù)的位置是空位。
8.in運(yùn)算符
判斷某一個(gè){鍵}是不是在數(shù)組中,返回的是一個(gè)bool值。
也能判斷對(duì)象是否具有某個(gè)屬性。
9.for... in
遍歷數(shù)組。類(lèi)似于while循環(huán)以及for循環(huán)。但是比這倆智能一點(diǎn),會(huì)跳過(guò)空位。
for(var j in arr){
console.log(arr[j]);
}
for..in 遍歷會(huì)將數(shù)組中不標(biāo)準(zhǔn)的鍵名和值也會(huì)遍歷出來(lái),而for循環(huán)以及while不會(huì)。
10.forEach 遍歷數(shù)組
arr.forEach(function(){
});
11.數(shù)組中的空位
數(shù)組中間的空位是計(jì)算在length里面的,但是里面沒(méi)有值,獲取的時(shí)候是undefined。
var arr = [1,2,,,,,4];
數(shù)組結(jié)尾的空位是不生效的,所以可以省略最后的一個(gè)逗號(hào)。
undefined 與空位的區(qū)別:
獲取內(nèi)容的時(shí)候都是undefined。
真實(shí)空位在for。。in循環(huán)遍歷的時(shí)候會(huì)自動(dòng)跳過(guò),而真實(shí)存儲(chǔ)undefined的位置不會(huì)跳過(guò)。
- 類(lèi)數(shù)組對(duì)象
類(lèi)似于數(shù)組的對(duì)象 。 具有l(wèi)ength屬性,這個(gè)屬性表示的變量?jī)?nèi)部的元素的個(gè)數(shù)。但是這個(gè)length不會(huì)動(dòng)態(tài)變化。
arguments: 參數(shù)對(duì)象
字符串
絕多數(shù)的DOM集合。oDiv
13.數(shù)組函數(shù)
壓棧函數(shù)
push 推 向數(shù)組中添加一個(gè)元素,添加到數(shù)組的最后。
pop 彈出 從數(shù)組中彈出一個(gè)元素,從最后刪除一個(gè)元素。
unshift: 向數(shù)組中添加一個(gè)元素,添加到數(shù)組開(kāi)頭
shift: 從數(shù)組中刪除一個(gè)元素,從數(shù)組的開(kāi)頭刪除
splice: 從數(shù)組中刪除元素。
splice(start,num);從start位置開(kāi)始,刪除num個(gè)元素。
splice(start,num,....);從start位置開(kāi)始,刪除num個(gè)元素。然后將后面的所有的參數(shù)作為元素添加帶這個(gè)刪除元素的位置。如果num是0,那么在start的位置開(kāi)始插入元素。
slice:數(shù)組截取,不會(huì)改變?cè)氐臄?shù)組,只是將截取出來(lái)的數(shù)據(jù)作為返回值單獨(dú)返回。
slice(start,end-1)返回的是start開(kāi)始,到end-1的數(shù)組元素的集合,返回的也是一個(gè)數(shù)組。
join:將數(shù)組轉(zhuǎn)化為字符串,默認(rèn)是使用逗號(hào)連接。
join(連接符):將數(shù)組元素使用連接符連接起來(lái)組成字符串。
concat:合并數(shù)組。
數(shù)組1.concat(數(shù)組2); 返回的是一個(gè)合并后的數(shù)組。并不會(huì)改變?cè)瓉?lái)的數(shù)組。
reverse:數(shù)組翻轉(zhuǎn);會(huì)改變?cè)瓉?lái)的數(shù)組。
arr.reverse();
14.冒泡排序
for(){
for(){
}
}