數(shù)組

1.數(shù)組的定義

任何類型的數(shù)據(jù),都可以放入數(shù)組。如果數(shù)組的元素還是數(shù)組溅话,就形成了多維數(shù)組。

var arr = [
  {a: 1},
  [1, 2, 3],
  function() {return true;}
];

arr[0] // Object {a: 1}
arr[1] // [1, 2, 3]
arr[2] // function (){return true;}

var a = [[1, 2], [3, 4]];
a[0][1] // 2
a[1][1] // 4

2. 數(shù)組的本質(zhì)

本質(zhì)上歌焦,數(shù)組屬于一種特殊的對象飞几。typeof運算符會返回數(shù)組的類型是object。數(shù)組的特殊性體現(xiàn)在独撇,它的鍵名是按次序排列的一組整數(shù)(0屑墨,1,2…)纷铣。JavaScript語言規(guī)定卵史,對象的鍵名一律為字符串,所以搜立,數(shù)組的鍵名其實也是字符串以躯。之所以可以用數(shù)值讀取,是因為非字符串的鍵名會被轉(zhuǎn)為字符串。對象有兩種讀取成員的方法:“點”結(jié)構(gòu)(object.key)和方括號結(jié)構(gòu)(object[key])忧设。但是刁标,對于數(shù)值的鍵名,不能使用點結(jié)構(gòu)址晕。

typeof [1, 2, 3] // "object"

var arr = ['a', 'b', 'c'];

arr['0'] // 'a'
arr[0] // 'a'

Object.keys(arr)
// ["0", "1", "2"]

var arr = [1, 2, 3];
arr.0 // SyntaxError

3.length屬性

只要是數(shù)組膀懈,就一定有l(wèi)ength屬性。該屬性是一個動態(tài)的值谨垃,等于鍵名中的最大整數(shù)加上1启搂。

var arr = ['a', 'b'];
arr.length // 2

arr[9] = 'd';
arr.length // 10

當(dāng)數(shù)組的length屬性設(shè)為2(即最大的整數(shù)鍵只能是1)那么整數(shù)鍵2(值為c)就已經(jīng)不在數(shù)組中了,被自動刪除了刘陶。上面代碼表示胳赌,當(dāng)length屬性設(shè)為大于數(shù)組個數(shù)時,讀取新增的位置都會返回undefined易核。

如果人為設(shè)置length為不合法的值匈织,JavaScript會報錯。

var arr = [ 'a', 'b', 'c' ];
arr.length // 3

arr.length = 2;
arr // ["a", "b"]

var a = ['a'];

a.length = 3;
a[1] // undefined

4.類數(shù)組對象

它們看上去很像數(shù)組牡直,可以使用length屬性缀匕,但是它們并不是數(shù)組,所以無法使用一些數(shù)組的方法碰逸。類似數(shù)組的對象只有一個特征乡小,就是具有l(wèi)ength屬性。

//數(shù)組的slice方法將類似數(shù)組的對象饵史,變成真正的數(shù)組满钟。
var arr = Array.prototype.slice.call(arrayLike);

// for循環(huán)
function logArgs() {
  for (var i = 0; i < arguments.length; i++) {
    console.log(i + '. ' + arguments[i]);
  }
}

// forEach方法
function logArgs() {
  Array.prototype.forEach.call(arguments, function (elem, i) {
    console.log(i+'. '+elem);
  });

//字符串也是類似數(shù)組的對象,所以也可以用Array.prototype.forEach.call遍歷胳喷。
Array.prototype.forEach.call('abc', function(chr) {
  console.log(chr);
});
// a
// b
// c
}

5.in 運算符

檢查某個鍵名是否存在的運算符in湃番,適用于對象,也適用于數(shù)組

var arr = [ 'a', 'b', 'c' ];
2 in arr  // true
'2' in arr // true
4 in arr // false

var arr = [];
arr[100] = 'a';

100 in arr // true
1 in arr // false

6.for…in 循環(huán)和數(shù)組的遍歷

for...in循環(huán)不僅可以遍歷對象吭露,也可以遍歷數(shù)組吠撮,畢竟數(shù)組只是一種特殊對象。但是讲竿,for...in不僅會遍歷數(shù)組所有的數(shù)字鍵泥兰,還會遍歷非數(shù)字鍵。

var a = [1, 2, 3];
a.foo = true;

for (var key in a) {
 console.log(key);
}
// 0
// 1
// 2
// foo

7.數(shù)組的空位

當(dāng)數(shù)組的某個位置是空元素题禀,即兩個逗號之間沒有任何值鞋诗,我們稱該數(shù)組存在空位(hole)。數(shù)組的空位不影響length屬性迈嘹。使用數(shù)組的forEach方法削彬、for...in結(jié)構(gòu)、以及Object.keys方法進行遍歷,空位都會被跳過吃警。如果某個位置是undefined糕篇,遍歷的時候就不會被跳過。```javascript
var a = [1, 2, 3];
delete a[1];

a[1] // undefined
a.length // 3

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末酌心,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子挑豌,更是在濱河造成了極大的恐慌安券,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氓英,死亡現(xiàn)場離奇詭異侯勉,居然都是意外死亡,警方通過查閱死者的電腦和手機铝阐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門址貌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人徘键,你說我怎么就攤上這事练对。” “怎么了吹害?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵螟凭,是天一觀的道長。 經(jīng)常有香客問我它呀,道長螺男,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任纵穿,我火速辦了婚禮下隧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谓媒。我一直安慰自己淆院,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布篙耗。 她就那樣靜靜地躺著迫筑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宗弯。 梳的紋絲不亂的頭發(fā)上脯燃,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音蒙保,去河邊找鬼辕棚。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的逝嚎。 我是一名探鬼主播扁瓢,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼补君!你這毒婦竟也來了引几?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤挽铁,失蹤者是張志新(化名)和其女友劉穎伟桅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叽掘,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡楣铁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了更扁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盖腕。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖浓镜,靈堂內(nèi)的尸體忽然破棺而出溃列,到底是詐尸還是另有隱情,我是刑警寧澤竖哩,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布哭廉,位于F島的核電站,受9級特大地震影響相叁,放射性物質(zhì)發(fā)生泄漏遵绰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一增淹、第九天 我趴在偏房一處隱蔽的房頂上張望椿访。 院中可真熱鬧,春花似錦虑润、人聲如沸成玫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哭当。三九已至,卻和暖如春冗澈,著一層夾襖步出監(jiān)牢的瞬間钦勘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工亚亲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留彻采,地道東北人腐缤。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像肛响,于是被迫代替她去往敵國和親岭粤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

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

  • 1特笋、數(shù)組的定義var arr=[];var arr=[{a:1,b:2},[1,2,3],function(){r...
    青春前行閱讀 355評論 0 0
  • (一) 數(shù)組的定義 數(shù)組(array)是按次序排列的一組值剃浇。每個值的位置都有編號(從0開始),整個數(shù)組用方括號表示...
    woow_wu7閱讀 46,805評論 0 6
  • 數(shù)組的基本理解及規(guī)則 本質(zhì)上雹有,數(shù)組屬于一種特殊的對象偿渡。typeof運算符會返回數(shù)組的類型是object。 數(shù)組的特...
    抱著熊喵啃什么閱讀 233評論 0 0
  • 一月份就快過完了霸奕,似乎還未感受到開始的氛圍,也沒有即將結(jié)束的失措感吉拳,就這樣平平淡淡的质帅,一分一秒地嘀嗒嘀嗒吧。 明日...
    木子小丹閱讀 94評論 0 0
  • 靜靜的夜晚留攒,黑色一步一步煤惩,清透了每個活力的角落,散發(fā)一股沉重的睡意炼邀,我靠著沙發(fā)魄揉,桌上紅熱的火慢慢烘熱紅茶,顏色迷離...
    三三蝸牛閱讀 293評論 0 0