1.Array構(gòu)造函數(shù)
var colors = new Array(); var colors = Array(3);//創(chuàng)建一個包含3項的數(shù)組2.數(shù)組字面量表示法 數(shù)組字面量由一對包含數(shù)組項的方括號表示,多個數(shù)組項之間以逗號隔開。
var colors = ["red", "blue", "green"];
經(jīng)典問題:確定某個對象是不是數(shù)組 對于一個網(wǎng)頁,或者是一個全局作用域而言,使用instanceof操作符即可:
if (value instanceof Array){ //對數(shù)組執(zhí)行某些操作}當網(wǎng)頁中具有兩個以上不同的全局執(zhí)行環(huán)境時,ECMAScript新增了Array.isArray()方法。 這個方法的目的是最終確定某個值到底是不是數(shù)組,而不管是在哪個全局執(zhí)行環(huán)境中創(chuàng)建的 用法如下:
if (Array.isArray(value)){ //對數(shù)組執(zhí)行某些操作 }所有的對象都具有 toLocaleString()、toString()、valueOf()方法。 調(diào)用toString()方法會返回由數(shù)組中每個值的字符串形式拼接而成的一個逗號分隔的字符串。 調(diào)用valueOf()返回的還是數(shù)組。
push()、pop() push()方法接收任意數(shù)量的參數(shù),把他們逐個添加都數(shù)組的末尾,并返回修改后數(shù)組的長度。 pop()方法從數(shù)組末尾移除最后一項,減少數(shù)組的length值,然后返回移除的項 示例如下:
var array = ["red","green"]; array.push("black"); console.log(array); // ["red", "green", "black"] array.pop(); console.log(array); // ["red", "green"] array.pop("red"); //pop()只能獲取最后一項,即使參數(shù)選項不是最后一個 console.log(array); //["red"]shift()方法能夠移除數(shù)組中的第一個項并且返回該項,同時數(shù)組長度減1 結(jié)合使用shift()和push()方法,可以像隊列一樣使用數(shù)組。
unshift()方法能在數(shù)組前端添加人一個項并且返回新數(shù)組的長度。 所以同時使用unshift()和pop()方法,可以從相反的方向模擬隊列,即在數(shù)組的前端添加項,從數(shù)組的末端移除項。
reverse()和sort()方法 reverse()方法會反轉(zhuǎn)數(shù)組項的順序 示例:
var values = [1,2,3,4,5];values.reverse();console.log(values); // 5,4,3,2,1sort()方法默認按照升序排列數(shù)組項——即最小的值位于最前面,最大的值排在最后面。 為了實現(xiàn)排序,sort()方法會調(diào)用每個數(shù)組項的toString()轉(zhuǎn)型方法,然后比較得到的字符串,以確定如何排序。 即使數(shù)組中的每一項都是數(shù)值,sort()方法比較的也是字符串。
var values = [0,1,5,10,15];values.sort();console.log(values); //0,1,10,15,5因為這種排序方式的存在,所以sort()方法可以接收一個比較函數(shù)作為參數(shù),以便指出那個值位于那個值的前面。 簡單的比較函數(shù):
function compare(value1,value2){ if(value1 < value2){ return -1;} if(value1 > value2){ return 1;} return 0;}說明:比較函數(shù)接收兩個參數(shù),如果第一個參數(shù)應(yīng)該位于第二個參數(shù)之前則返回一個負數(shù),如果兩個參數(shù)相等,則返回0,如果第一個參數(shù)應(yīng)該位于第二個參數(shù)之后,則返回一個正數(shù)。 這個比較函數(shù)適用于大多數(shù)數(shù)據(jù)類型,只要將其作為參數(shù)傳遞給sort()即可 reverse()和sort()方法返回值是經(jīng)過排序之后的數(shù)組。
對于數(shù)值類型或者其valueOf()方法會返回數(shù)值類型的對象類型,比較函數(shù)可以簡化為:
function compare(value1,value2){ return value2 - value1;}concat()方法“拼接”
可以基于當前數(shù)組中的所有項創(chuàng)建一個新數(shù)組。 具體來說,這個方法會先創(chuàng)建當前數(shù)組一個副本,然后將接收到的參數(shù)添加到這個副本的末尾,最后返回新構(gòu)建的數(shù)組。 在沒有給concat()方法傳遞參數(shù)的情況下,它只是復(fù)制當前數(shù)組并且返回副本。 例如:
var colors = ["red","green","blue"];var colors2 = colors.concat("yellow",["black","brown"]);console.log(colors); //red,green,blueconsole.log(colors2); //red,green,yellow,black,brown從上例可以看出concat拼接數(shù)組時會創(chuàng)建一個副本,所以colors中的值是不變的。
slice()方法“截取”
能夠基于當前數(shù)組中的一個或者多個項創(chuàng)建一個新數(shù)組。slice()方法接收一或兩個參數(shù),即要返回項的起始和結(jié)束位置。
如果有兩個參數(shù),該方法返回起始和結(jié)束位置之間的項——但不包括結(jié)束位置的項 slice方法不會影響原始數(shù)組。
var colors = ["red","green","blue","yellow","purple"];var color2 = colors.slice(1);var color3 = colors.slice(1,4);console.log(color2); //green,blue,yellow,purpleconsole.log(color3); //green,blue,yellowTips: - 如果slice()方法的參數(shù)中有一個負數(shù),則用數(shù)組長度加上該參數(shù)確定相應(yīng)的位置 - 如果結(jié)束位置小于起始位置,則返回空數(shù)組。
splice()方法 參數(shù)說明:(起始位置,要刪除的項數(shù),要插入的任意數(shù)量的項) splice()方法始終都會返回一個數(shù)組,該數(shù)組中包含從原始數(shù)組中刪除的項(如果沒有刪除的項,則返回空數(shù)組)
indexOf()和lastIndexOf()都接收兩個參數(shù):要查找的項和表示查找起點位置的索引。 indexOf()方法從數(shù)組的開頭開始向后查找,lastIndexOf()方法從數(shù)組的末尾開始向前查找。 這兩個方法都返回要查找的項在數(shù)組中的位置,沒找到的情況返回-1
some():如果該函數(shù)對任一項返回true,則返回true
以上方法都不會修改數(shù)組中包含的值 每個方法都接收兩個參數(shù):要在每一項上運行的函數(shù)和運行該函數(shù)的作用域?qū)ο?——影響this的值。 傳入這些方法中的函數(shù)接收三個參數(shù):數(shù)組項的值,該項在數(shù)組中的位置和數(shù)組對象本身。
新聞熱點
疑難解答