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

toString 方法返回?cái)?shù)組的字符串形式。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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