在W3C標(biāo)準(zhǔn)中有很多Array實例對象的方法,它比上一篇講到的《與數(shù)組相關(guān)的全局方法》更多,而且在工作中也更實用。同樣的,我在這里把一些常用的方法小結(jié)一下,多加練習(xí)。
常見的Array實例對象的方法有valueOf(), toString(), push(), pop(), join(), concat(), shift(), unshift(), reverse(), slice(), splice(), sort() 等等,下面就一一來介紹一下吧。
1、valueOf方法,toString方法
valueOf方法返回數(shù)組本身。

toString 方法返回數(shù)組的字符串形式。

2、push方法,pop方法
push方法用于在數(shù)組的末端添加一個或多個元素,并返回添加后的數(shù)組的長度。

如果需要合并兩個數(shù)組,可以這樣寫。

難點:push方法還可以用于向?qū)ο筇砑釉?,添加后的對象變成“類似?shù)組的”對象,即新加入元素的鍵對應(yīng)數(shù)組的索引,并且對象有一個length屬性。

pop方法用于刪除數(shù)組的最后一個元素,并返回該元素。

3、join方法,concat方法
join方法以參數(shù)作為分隔符,將所有數(shù)組成員組成一個字符串返回。如果不提供參數(shù),默認(rèn)用逗號分隔。

通過函數(shù)的call方法,join方法(即Array.prototype.join)也可以用于字符串。

concat方法用于多個數(shù)組的合并。它將新數(shù)組的成員,添加到原數(shù)組的尾部,然后返回一個新數(shù)組。

這里需要注意的是通過concat()返回一個新數(shù)組后不會改變原數(shù)組的值,而通過push()方法連接則會改變原數(shù)組的值,例如:

concat方法也可以用于將對象合并為數(shù)組,但是必須借助call方法。

4、shift方法,unshift方法
shift方法用于刪除數(shù)組的第一個元素,并返回該元素。

unshift方法用于在數(shù)組的第一個位置添加元素,并返回添加新元素后的數(shù)組長度。

5、reverse方法
reverse方法用于顛倒數(shù)組中元素的順序,使用這個方法以后,返回改變后的原數(shù)組。

6、slice方法
slice方法用于提取原數(shù)組的一部分,返回一個新數(shù)組,原數(shù)組不變。
它的第一個參數(shù)為起始位置(從0開始),第二個參數(shù)為終止位置(但該位置的元素本身不包括在內(nèi))。如果省略第二個參數(shù),則一直返回到原數(shù)組的最后一個成員。

上面代碼表示,如果slice方法的參數(shù)是負(fù)數(shù),則從尾部開始選擇的成員個數(shù);如果參數(shù)值大于數(shù)組成員的個數(shù),或者第二個參數(shù)小于第一個參數(shù),則返回空數(shù)組。
slice方法的一個重要應(yīng)用,是將類似數(shù)組的對象轉(zhuǎn)為真正的數(shù)組。

7、splice方法
splice方法用于刪除原數(shù)組的一部分成員,并可以在被刪除的位置添加入新的數(shù)組成員。它的返回值是被刪除的元素。該方法會改變原數(shù)組。
splice的第一個參數(shù)是刪除的起始位置,第二個參數(shù)是被刪除的元素個數(shù)。如果后面還有更多的參數(shù),則表示這些就是要被插入數(shù)組的新元素。

上面代碼從原數(shù)組位置4開始,刪除了兩個數(shù)組成員。

上面代碼除了刪除成員,還插入了兩個新成員。
如果只是單純地插入元素,splice方法的第二個參數(shù)可以設(shè)為0。

如果只提供第一個參數(shù),則實際上等同于將原數(shù)組在指定位置拆分成兩個數(shù)組。

8、sort方法
sort方法對數(shù)組成員進行排序,默認(rèn)是按照字典順序排序。排序后,原數(shù)組將被改變。

上面代碼的最后兩個例子,需要特殊注意。sort方法不是按照大小排序,而是按照對應(yīng)字符串的字典順序排序,所以101排在11的前面。
如果想讓sort方法按照自定義方式排序,可以傳入一個函數(shù)作為參數(shù),表示按照自定義方法進行排序。該函數(shù)本身又接受兩個參數(shù),表示進行比較的兩個元素。如果返回值大于0,表示第一個元素排在第二個元素后面;其他情況下,都是第一個元素排在第二個元素前面。
