/**
* 本文純粹是梳理一下目前W3C標(biāo)準(zhǔn)中Array對(duì)象的自帶Method。
* 全文沒(méi)啥營(yíng)養(yǎng),不過(guò)最后性能測(cè)試的部分,倒是拋出了一些疑問(wèn)。
*/
賦值方法 (Mutator methods)
這些方法直接修改數(shù)組自身
pop 和 push
Array.pop(); // 刪除數(shù)組最后一個(gè)元素,返回被刪除的元素
Array.push(element1, ..., elementN); // 在數(shù)組尾部插入1-N個(gè)元素,返回操作后數(shù)組的length
通過(guò)這 pop 和 push ,就能把數(shù)組模擬成 堆棧(stack) 來(lái)進(jìn)行操作。
堆棧這種數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),就是“后進(jìn)先出”(LIFO, Last In First Out)。
shift 和 unshift
Array.shift(); // 刪除數(shù)組第一個(gè)元素,返回被刪除的元素
Array.unshift(element1, ..., elementN) ; // 在數(shù)組頭部插入1-N個(gè)元素,返回操作后數(shù)組的length
利用 shift 和 unshift 則可以實(shí)現(xiàn) 隊(duì)列(queue) 的操作。
隊(duì)列的操作方式和堆棧相反,采用“先進(jìn)先出”(FIFO, First-In-First-Out)。
splice
代碼如下:
Array.splice(index , howMany[, element1[, ...[, elementN]]]);
Array.splice(index);
參數(shù):
index:規(guī)定從何處添加/刪除元素。
howmany:規(guī)定應(yīng)該刪除多少元素。
elements:規(guī)定要添加到數(shù)組的新元素,從 index 所指的下標(biāo)處開(kāi)始插入。
splice方法是對(duì) pop、push、shift、unshift 的一個(gè)補(bǔ)充。
返回值是被刪除的元素。
reverse
代碼如下:
Array.reverse(); // 顛倒數(shù)組中元素的順序,并返回逆序后的數(shù)組
sort
代碼如下:
Array.sort([compareFunction]);
如果調(diào)用該方法時(shí)沒(méi)有使用參數(shù),將按字母順序?qū)?shù)組中的元素進(jìn)行排序。
說(shuō)得更精確點(diǎn),是按照字符編碼的順序進(jìn)行排序。
如果想按照其他標(biāo)準(zhǔn)進(jìn)行排序,就需要提供比較函數(shù),該函數(shù)要比較兩個(gè)值,然后返回一個(gè)用于說(shuō)明這兩個(gè)值的相對(duì)順序的數(shù)字。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b,其返回值如下:
•若 a 小于 b,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前,則返回一個(gè)小于 0 的值。
•若 a 等于 b,則返回 0。
•若 a 大于 b,則返回一個(gè)大于 0 的值。
--------------------------------------------------------------------------------
訪(fǎng)問(wèn)方法(Accessor methods)
這些方法只是返回相應(yīng)的結(jié)果,而不會(huì)修改數(shù)組本身
concat
代碼如下:
Array.concat(value1, value2, ..., valueN); // 鏈接2個(gè)或多個(gè)數(shù)組,并返回合并后的數(shù)組
但有一個(gè)需要注意的地方,用下面的例子說(shuō)明:
代碼如下:
var arr = [1, 2, 3];
arr.concat(4, 5); // return [1, 2, 3, 4, 5]
arr.concat([4, 5]); // return [1, 2, 3, 4, 5]
arr.concat([4, 5], [6, 7]); // return [1, 2, 3, 4, 5, 6, 7]
arr.concat(4, [5, [6, 7]]); // return [1, 2, 3, 4, 5, [6, 7]]
join
string = Array.join(separator);
把數(shù)組中的所有元素放入一個(gè)字符串。其中,元素之間是通過(guò)指定的分隔符進(jìn)行分隔的。