01
JavaScript有很多數據類型,數組就是其中的一類。英文名叫Array。
例如:var names=["zhangsan" ,? "lisi",? "wangwu",? "zhaoliu"];
其標志就是一堆方括號【】。
提到數組,就要提到另一個數據類型:“對象(object)”。
例如:var names={? firstName:"zhangsan",? secondName:"lisi",? thirdName:"wangwu",? fourthName:"zhaoliu"? }
這兩個例子都是表達name的值。從數組的定義中可以得出,JavaScript中,數組其實是對象的一種特殊形式。
數組的索引實際上和碰巧是整數的對象屬性名差不多。 例子中,數組里的索引,和對象里屬性名,其實都是一回事。只不過數組的索引從“0”開始罷了。
也可以理解為,數組是經過優化排序的對象。因為排序的優化,所以用索引來遍歷整個數組,比訪問常規的對象屬性要方便的多。我想這也是數組的意義所在。
02
關于數組的神奇,首先讓我驚訝的是它的索引是從“0”開始。
為何不從“1”開始?開始詢問“度娘”。網上一大堆回答,從編程基礎知識,到計算機基礎科學,讓我陷入浩瀚的知識海洋之中,然后徹底懵逼。
只有一個答案,讓我看懂了。為何索引從“0”開始。因為這屬于“烏龜的屁股長痔瘡”,“爛龜腚(爛規定)”。
好吧,既然是規定,咱啥不說了,執行就是了。
不過,值得注意的是,數組的長度(length)是從1開始計數,有一個值,算一個值。不能從零計數。
03
另外還有一類數組,比較奇葩----稀疏數組。
例如: var array=[,? ,? ,? ];
這可不是一個空數組,他是一個稀疏數組,他也有值,
只不過值為:【undefined,undefined,undefined】。這個數組仍有長度(length),長度為3。
這也解釋了為何數組中有一個元素刪除了,可長度仍然不變。
關于數組知識,之前我接觸最多的知識就是遍歷數組,也就是“for循環”。經過一周的JavaScript數組基礎知識溫習,我感覺到數組的知識很多。光數組方法有近20種。
什么是數組方法?我個人淺顯理解就是,通過運用一些函數,將數組進行排序、過濾、運算、簡化、搜索等操作。這些針對數組而內置的函數,就是數組的方法。說白了就是數組的函數。
從join()、reverse()、sort()、push()、pop()到forEach()、reduce()......
可謂眼花繚亂,這些方法中,有些看上去很相似,但其實有著本質區別。
比如:splice()方法,與slice()方法,這兩個方法擁有非常相似的名字,但是功能有著本質的區別。因為splice()方法,不僅會返回一個新的數組,還會修改最初調用的數組。
這么多數組方法,都是根據編程的需求來選擇。而這些方法,本質上來講,其實也是一個函數,一個操作數組的函數。只不過被內置了,我們看不到function字樣,看不見函數體{ }罷了。
04
數組雖然看上去就是兩個方括號,但是這里面的學問可謂另有乾坤。神奇的數組,需要們花時間去挖掘他,掌握它,直至熟練運用它。
JavaScript語言學習,我在進行中,加油......