數(shù)組是經(jīng)歷過優(yōu)化的對象,用數(shù)字索引來訪問數(shù)組一般來說要比訪問常規(guī)的對象屬性要快很缀去;
數(shù)組的直接量允許有可選的結尾的逗號软舌,所以[ , , ]的長度為2羽圃;
數(shù)組是對象的特殊的方式欢搜,使用【】來訪問數(shù)組元素的時候封豪,就像用方括號訪問對象的屬性;過程是:JavaScript現(xiàn)將數(shù)值1轉(zhuǎn)換成字符串‘1’炒瘟,在進行屬性名來使用吹埠;
數(shù)組的序號范圍0-2 32 -2超過這個范圍數(shù)組的長度會為穩(wěn)定在固定的數(shù)值不會發(fā)生變化,
a[-1.23]為a數(shù)組添加一個‘-1.23’的屬性
a['1000']為a數(shù)組的第1001個元素
a[1.000]和a[1]一樣唧领;
字面量聲明數(shù)組與構造函數(shù)聲明數(shù)組的區(qū)別:
var a = [, , , ];
var a1 = new Array(3);
0 in a 返回true藻雌;
0 in a1 返回false;
其中字面量創(chuàng)建的數(shù)組有元素都是underfined斩个;
但是構造函數(shù)創(chuàng)建的數(shù)組胯杭,只是有l(wèi)ength為3其中沒有元素;
delete運算符會刪除元素但是不會影響元素的長度受啥;
數(shù)組的方法:
1.數(shù)組尾部的刪除和添加:
push尾部添加元素做个;返回添加后數(shù)組的長度
pop尾部刪除元素;返回被刪除的元素滚局;
2.ES2015的數(shù)組遍歷的方法forEach
arr.forEach(function(value,index){ 數(shù)組操作 })居暖;
3.join()將數(shù)組轉(zhuǎn)換成字符串規(guī)定特定的連字符,默認用逗號鏈接藤肢;返回字符串
4.reverse()將數(shù)組翻轉(zhuǎn)太闺;返回翻轉(zhuǎn)后的數(shù)組;改變原數(shù)組嘁圈;
5.sort()數(shù)組的元素排序省骂;
一般會傳遞進去一個function函數(shù);參數(shù)是a和b函數(shù)返回時:return a - b數(shù)組按照小到大排序最住,return b - a時數(shù)組按照大到小排序钞澳;一般這個方法可以給對象排序;
6.concat()的方法創(chuàng)建 并返回一個新數(shù)組涨缚;元素包含調(diào)用concat()的原始數(shù)組的元素和concat的每個參數(shù)轧粟,如果參數(shù)是數(shù)組,則會鏈接數(shù)組的元素脓魏,這個只支持以為數(shù)組的鏈接;如 :[1,2,3].concat([444],[5,[6]],[7]); return [1,2,3,444,5,[6],7];
7.slice和splice的方法:slice是返回數(shù)組的指定的片段或者子數(shù)組兰吟;參數(shù)分別為開始和結束位置;splice是在數(shù)組中插入和刪除元素的通用方法茂翔,第一個參數(shù)是指定插入和刪除的起始位置揽祥,第二個參數(shù)是指定從數(shù)組刪除的元素的個數(shù),省略參數(shù)就是從規(guī)定的位置刪除到數(shù)組結尾檩电,
8.pop和push的方法:push是在數(shù)組的尾部添加一個或多個元素拄丰,返回數(shù)組的長度府树;pop的方法是 刪除數(shù)組的最后一個元素,返回刪除的值料按;添加的方法可以傳遞多個參數(shù)
9.shift和unshift的方法奄侠,unshift在數(shù)組的頭部添加元素返回數(shù)組的長度,shift是刪除數(shù)組的第一個元素载矿,返回刪除的元素垄潮;添加的方法可以傳遞多個參數(shù);
ES5的數(shù)組的方法:
1.forEach(function(index, val, [ thisArr ]){ 操作函數(shù)});從頭到尾遍歷數(shù)組闷盔,為每個元素指定函數(shù)弯洗;forEach的方法是遍歷數(shù)組,在數(shù)組的所有的元素遍歷之前逢勾,是不會停止遍歷的牡整,如果要提前停止需要將forEach方法放在一個try-catch中,用來接收錯誤并拋出 溺拱;這里的fotEach方法只是單純的遍歷數(shù)組逃贝;
2.map()的方法:將調(diào)用數(shù)組的每個元素傳遞給指定的函數(shù),返回一個新的數(shù)組迫摔,他是該函數(shù)的返回值沐扳;arr.map(function( val是數(shù)組的元素 ){ return 返回數(shù)組的元素});該方法會保持原數(shù)組的特性,原數(shù)組稠密就返回稠密數(shù)組句占,原數(shù)組稀疏就會返回稀疏的數(shù)組沪摄;
3.filter()方法:用來篩選數(shù)組的元素,滿足條件的返回原數(shù)組的一個子集數(shù)組纱烘;回調(diào)函數(shù)記得加上return杨拐;只會返回稠密的數(shù)組;
4.every和some方法是對邏輯的判斷:every()方法是所有的數(shù)組元素都要滿足條件凹炸;some是判斷數(shù)組元素部分滿足條件;次函數(shù)的返回值是true和false昼弟;
5.reduce和reduceRight的方法:是用指定的函數(shù)將數(shù)組元素進行組合返回一個數(shù)據(jù)啤它;
6.indexOf和lastIndexOf的方法可以判斷元素的位置;
7.Array.isArray(變量):ES5新增的方法判斷是否數(shù)組舱痘;之前一直利用instanceof操作符來判斷变骡; 變量 instanceof Array判斷是否是數(shù)組;但是instanceof操作符只能用于簡單的情形芭逝;
類數(shù)組調(diào)用數(shù)組的方法:利用Function.call的方法塌碌;一般有的瀏覽器自己就封裝了函數(shù)的方法可以利用Array.prototype.join.call( 偽數(shù)組,‘jion的參數(shù)’);
字符串的方法可以通用數(shù)組的方法旬盯;