javascript 數(shù)組Array介紹

一.數(shù)組

? ? ? ? 1>數(shù)組就是存儲(chǔ)一系列值的饰迹,任何類型的數(shù)據(jù)再扭,都可以放入數(shù)組

????????????var?arr?=?[2,?'2',?false,{a:1},?[1,2,3],function(){return true;},undefined,null]

????????????console.log(arr)


? ? ? ? ? ?2>多維數(shù)組:

????????????????????????? var?arr=[[22,33],[45,54]]

? ? ? ? ? ? ? ? ? ? ? ? ? var?arr=[[[232],[32]],[[2342],[232]]]

? ? ? ? ? ? ? ? ? ? ? ? ? ?console.log(arr[0][0][0])//232

? ? ? ? ? ? 3>數(shù)組類型其實(shí)是一個(gè)object

????????????????????????????var?arr=[112,23,3,4]

????????????????????????????console.log(typeof?arr)//object

? ??????????????????????????console.log(Object.keys(arr))//?["0", "1", "2", "3"]

? ? ? ? ? ? ? ? 1)Object.keys返回?cái)?shù)組中的所有鍵值

? ??????????????????????????arr['0']// 112

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?arr[0]//112

? ? ? ? ? ? ? ? ? ?在這里字符串0和數(shù)字0都能獲取數(shù)組中對(duì)應(yīng)的數(shù)據(jù),鍵名其實(shí)是string類型励背,如果你寫的是number類型,它可以自動(dòng)轉(zhuǎn)化為string類型

? ??????????????????????????var?arrKeys=Object.keys(arr)

????????????????????????????console.log(typeof?arrKeys[0])//string

? ? ? ? ? ? ? ? ?2)如果想獲取數(shù)組中某個(gè)元素

? ??????????????????????????var?arr=[112,23,3,4];

????????????????????????????arr.0// 報(bào)錯(cuò)-----因?yàn)閿?shù)值型不能單獨(dú)作為標(biāo)識(shí)符

二、數(shù)組屬性

? ? ? ? ? ? 1>length獲取數(shù)組長度

????????????????????????var?arr=[112,23,3,4];? ??????????????

????????????????????????console.log(arr.length)//4

? ? ? ? ? ? ? ? ? ? ? ? 1)

?????????????????????????????var?arr=[112,23,3,4]

?????????????????????????????arr[7]=7//添加修改元素

???????????????????????????? console.log(arr,arr.length)


? ? ? ? ? ? ? ? ? ? ? ?2)將數(shù)組長度改成比當(dāng)前數(shù)組長度小的值日缨,那么arr會(huì)自動(dòng)刪除arr長度后面的值。如果修改的length比當(dāng)前數(shù)組長度長掖看,那么則自動(dòng)添加匣距,只不過添加的都是empty(空位)

? ??????????????????????????????var?arr=[112,23,3,4]//arr.length是4

?????????????????????? ? ? ? ???arr.length=2

????????????????????????????????console.log(arr)//[112,?23]---數(shù)組后面的3、4元素都被刪了

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??arr.length=10

? ??????????????????????????????console.log(arr)//[112, 23, empty × 8]//添加了8個(gè)空位

????????????????????????????????console.log(arr[5])//undefined

? ? ? ? ? ? ? ? ? ? ? ? 注意:如果length不合法哎壳,報(bào)錯(cuò)

? ? ? ? ? ? ? ? ? ? ? 3)

? ????????????????????????????var?arr?=[1,23,5]

??????????????????? ? ? ? ? ?arr[0.03]=3

???????????????????????????? arr['xiaoming']='xm'

?????????????????? ? ? ? ? ??console.log(arr,'arr')


? ? ? ? ? ? ? ? ? ? ? ? ? ?看到上圖? length是3毅待。為什么我們添加了鍵名0.03、xiaoming兩個(gè)鍵名归榕,但length是3呢尸红?length屬性的值就是等于最大的數(shù)字鍵加1,這里面最大的數(shù)字鍵是2刹泄,所以length是2+1是3外里。



三、in 運(yùn)算符:檢查某個(gè)鍵名是否存在特石,可用于對(duì)象和數(shù)組盅蝗。? ? ? ? ? ? ? ? ? ??

????????????????????var?arr?=[1,23,5]

? ??????????????????console.log(1?in?arr)//true

? ??????????????????console.log(2?in?arr)//true

? ??????????????????console.log('2'?in?arr)//true

????????????????????console.log(6?in?arr)//false----因?yàn)閍rr鍵名只有0,1姆蘸,2所以輸出false

? ? ? ? ? ? ? ? ? ? arr.lenght=10

????????????????????console.log(8?in?arr)//false----因?yàn)?這里是空位(empty)

四墩莫、數(shù)組空位:

? ? ? ? 1>數(shù)組中兩個(gè)逗號(hào)之間沒有值。不影響length逞敷,獲取空位上的元素時(shí)是undefined狂秦,但實(shí)際上是沒有值,可以讀到length但是獲取不到鍵名

????????var?arr=[23,,,89]

????????console.log(arr.length)//4

? ??????console.log(arr[1])//undefined

? ? ? ?2> 使用delete命令刪除一個(gè)數(shù)組成員推捐,會(huì)形成空位故痊,并且不會(huì)影響length屬性。

????????var?arr?=[1,,23,5]

????????delete?arr[1]//[1,?empty,?23,?5]玖姑,arr.length還是4

????????delete?arr[2]//[1,?empty?×?2,?5]愕秫,arr.length還是4


? ? ? ? delete對(duì)象中的成員

????????var?obj={

????????????a:'222',

????????????b:'333',

????????????c:'44'

????????}

????????delete?obj.a

? ? ? ? 這時(shí)候obj就變成了{(lán)b: "333", c: "44"}

? ? ? ? 3>空位和undefined的區(qū)別

? ? ? ? ? ?1)空位

????????????? ????var?arr?=?[,?,?,];

?????????????????arr.forEach(function?(x,?i)?{

????????????????????console.log(i?+'-------------'+?x);//?沒有產(chǎn)生任何輸出

??????????????????})

? ? ? ? ? ????? ?for?(var?key?in?arr)?{

??????????????????????console.log(key);?//?沒有產(chǎn)生任何輸出

??????????????????}

??????????????????let?keys=Object.keys(arr)

??????????????????console.log(keys)//?[]

? ? ? ? ? ? 2)undefined

? ??????????????????var?arr?=?[111,221,undefined,444];

????????????????????arr.forEach(function?(x,?i)?{

????????????????????????console.log(i?+?'-------------'?+?x);

????????????????????})

????????????????????//0-------------111

????????????????????// 1-------------221

????????????????????//2-------------undefined

????????????????????//3-------------444

????????????????????for?(var?key?in?arr)?{

????????????????????????console.log(key);

????????????????????}

????????????????????//0

? ? ? ? ? ? ? ? ? ? //1

? ? ? ? ? ? ? ? ? ? //2

? ? ? ? ? ? ? ? ? ? //3

????????????????????let?keys=Object.keys(arr)

? ? ? ? ? ? ? ? ? ? ?//["0", "1", "2", "3"]

? ? ? ? ? ? ?總結(jié):空位,使用數(shù)組的forEach方法焰络、for...in結(jié)構(gòu)戴甩、以及Object.keys方法進(jìn)行遍歷,空位都會(huì)被跳過遍歷闪彼。而鍵值是undefined則不會(huì)跳過遍歷

五甜孤、類似數(shù)組的對(duì)象

? ? 1>????var obj = {0:'a',1:'b',2:'c',length:3}

????????????obj[0]// 'a'

????????????obj[1]// 'b'

????????????obj.length// 3

????????????obj.push('d')// error

? ????????? 這個(gè)obj就是一個(gè)類似數(shù)組的對(duì)象协饲,但他不是數(shù)組,因?yàn)樗痪邆鋽?shù)組特有的方法

? ????????? “類似數(shù)組的對(duì)象”的根本特征缴川,就是具有l(wèi)ength屬性茉稠。只要有l(wèi)ength屬性,就可以認(rèn)為這個(gè)對(duì)象類似于數(shù)組把夸。但是有一個(gè)問題而线,這種length屬性不是動(dòng)態(tài)值,不會(huì)隨著成員的變化而變化恋日。

? ? 2>有哪些常見的‘類似數(shù)組對(duì)象’

????????1).函數(shù)的arguments對(duì)象

? ? ? ??????function?args()?{?return?arguments?}

????????????var?arrayLike?=?args('str1',?'str2');

? ? ? ? ? ? console.log(arrayLike)//2

????????????console.log(arrayLike?instanceof?Array)//false

? ? ? ? 2).大多數(shù) DOM 元素集

? ???????????var?domArray?=?document.querySelectorAll('div');

????????????console.log(domArray.length)//4

? ? ? ? ? ? console.log(domArray?instanceof?Array)//false

? ? ? ? 3).字符串

? ??????????var?str='aedtee'

????????????str?instanceof?Array?//?false

????????????console.log(str.length)//6

????????????console.log(str)//false

? ? 3>“類似數(shù)組對(duì)象”怎么使用Array上的方法

? ? ? ? 1)數(shù)組的slice方法膀篮,讓“類似數(shù)組對(duì)象”變成真正數(shù)組

? ??????????????var arr =Array.prototype.slice.call(arrayLike);

? ??????????????console.log(arr?instanceof?Array)//true

? ? ? ? 2)call()把數(shù)組的方法放到對(duì)象上面

? ??????????????Array.prototype.forEach.call(arrayLike,?function(value,?index){

????????????????????console.log(index?+?'?:?'?+?value);

????????????????});

? ? ? ? ? ? ????通過call(),把forEach()繼承到arrayLike上面岂膳。

? ? ? ? ? ? ? ? 注意誓竿,這種從Array中繼承的forEach比數(shù)組forEach要慢。建議先將“類似數(shù)組對(duì)象“轉(zhuǎn)化為真正的數(shù)組谈截,再使用筷屡。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市簸喂,隨后出現(xiàn)的幾起案子速蕊,更是在濱河造成了極大的恐慌,老刑警劉巖娘赴,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件规哲,死亡現(xiàn)場離奇詭異,居然都是意外死亡诽表,警方通過查閱死者的電腦和手機(jī)唉锌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竿奏,“玉大人袄简,你說我怎么就攤上這事》盒ィ” “怎么了绿语?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長候址。 經(jīng)常有香客問我吕粹,道長,這世上最難降的妖魔是什么岗仑? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任匹耕,我火速辦了婚禮,結(jié)果婚禮上荠雕,老公的妹妹穿的比我還像新娘稳其。我一直安慰自己驶赏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布既鞠。 她就那樣靜靜地躺著煤傍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嘱蛋。 梳的紋絲不亂的頭發(fā)上蚯姆,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音浑槽,去河邊找鬼。 笑死返帕,一個(gè)胖子當(dāng)著我的面吹牛桐玻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荆萤,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼镊靴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了链韭?” 一聲冷哼從身側(cè)響起偏竟,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎敞峭,沒想到半個(gè)月后踊谋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡旋讹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年殖蚕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沉迹。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡睦疫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鞭呕,到底是詐尸還是另有隱情蛤育,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布葫松,位于F島的核電站瓦糕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏腋么。R本人自食惡果不足惜刻坊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望党晋。 院中可真熱鬧谭胚,春花似錦徐块、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旁趟,卻和暖如春昼激,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锡搜。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工橙困, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耕餐。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓凡傅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肠缔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夏跷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容