1)檢測對象是否爲數組,使用instanceof 操做符前端
if(value instanceof Array) { //對數組執行某些操做 }
2)獲取對象的類型,比較是否爲object類型(此方法只能檢測是否爲Object,不推薦)chrome
if(typeof(value)=="Object") { //對數組執行某些操做 }
3)檢測對象是否爲數組,使用Array.isArray()方法(只支持ie9+,firefox 4+,safari 5+,opera 10.5+和chrome)數組
if(Array.isArray(value)) { //對數組執行某些操做 }
全部對象都具備toLocaleString(),toString()和valueOf()方法.數據結構
調用數組的toString()方法會返回由數組中每一個值的字符串形式拼接而成的一個以逗號分隔的字符串.函數
調用valueOf()返回的仍是數組.測試
join()方法:接收一個參數,即用做分隔符的字符串,而後返回包含全部數組項的字符串spa
var colors=["red","green","blue"]; alert(colors.join("||"));//red||green||blue
棧是一種LIFO(Last-In-First-Out,後進先出)的數據結構.firefox
JavaScript爲數組專門提供了push()和pop方法()方法,以便實現相似棧的行爲設計
1):push()方法能夠接收任意數量的參數,把它們逐個添加到數組末尾,並返回修改後數組的長度code
2):pop()方法則從數組末尾移除最後一項,減小數組的length值,而後返回移除的項.
var colors=new Array();//建立一個數組 var count=colors.push("red","green");//推入兩項 alert(count);//2 count=colors.push("black");//推入另外一項 alert(count);//3 var item=colors.pop();//移除最後一項,並返回最後一項的值 alert(item);//「black」 alert(colors.length);//2
以上代碼首先咱們使用push()將兩個字符串推入數組的末尾,並將返回的結果保存在變量count中.而後再推入一個值,而結果任然保存在count中.由於此時數組中包含3項,因此push()返回3.
在調用pop()時,它會返回數組的最後一項,即字符串"black".此後,數組中僅剩兩項.
棧數據結構的訪問規則是LIFO(Last-In-First-Out,後進先出),而隊列數據結構的訪問規則是FIFO(First-In-First-Out,先進先出).
隊列在列表的末端添加項,從列表的前端移除項.
JavaScript爲隊列提供了shift()和unshift()方法
1):shift()移除數組中第一個項並返回改項,同時將數組長度減1.
2):unshift()在數組前端添加任意個項並返回新數組的長度.
結合push()和pop方法,shift()和unshift()方法 作的一個實例
var n=new Array("張三","李四"); n.push("王五");//添加參數到數組末尾,並修改數組長度 n.shift();//移除數組第一項,並返回該項 n.unshift("小錢");//添加參數到數組前端 n.pop();//從數組末尾移除最後一項 //循環顯示出數組的值 for(var i=0;i<n.length;i++) { console.log(n[i]); }
//小錢 李四
數組中已經存在兩個能夠直接用來重排序的方法:reverse()和sort()
在默認狀況下,sort()方法回按升序排列數組項——即最小的值位於最前面,最大的值排在最後面,爲了實現排序,sort()方法會調用每一個數組項的toString()轉型方法,
而後比較獲得的字符串,以肯定如何排序.即數組中的每一項都是數值,sort()方法比較的也是字符串,以下所示
var values=[0,1,5,10,15]; values.sort();//進行排序顯示 alert(values);//0,1,10,15,5
sort()方法根據測試字符串的結果改變原來的順序.由於數組5雖然小雨10,但在進行字符串比較時,「10」則位於「5"的前面,因而數組的順序就被修改了.這種排序方式在不少狀況下都不是最佳方案,所以sort()方法能夠接收一個比較函數做爲參數,以便咱們制定哪一個值位於哪一個值的前面.
比較函數接收兩個參數,若是第一個參數位於第二個以前則返回一個負數,若是兩個參數相等則返回0,如何第一個參數位於第二個以後則返回一個正數.如下就是一個簡單的比較函數:
function compare(value1,value2) { if(value1<value2) { return -1; }else if(value1==value2) { return 0; }else { return 1; } } var values=[0,1,5,10,15]; values.sort(compare);//進行排序顯示 alert(values);//0,1,5,10,15
將比較函數傳遞到sort()方法以後,數值仍然保持了正確的升序.固然,也能夠經過比較函數產生降序排序的結果,只要交換比較函數的返回值便可.
注:value1<value2 返回-1表示正序,返回1表示倒序
固然若是反轉數組原來的順序,使用reverse()方法要更快一些
固然如何對於數值類型或其valuesOf()方法會返回數值類型的對象類型,可使用一個更簡單的比較函數.這個函數只要用第一個值減第二個值便可
function compare(value1,value2) { return value1-value2; }
此方法返回的是正序
1):concat()方法能夠基於當前數組中的全部項建立一個新數組.
在沒有給concat()方法傳遞參數的狀況下,它只是複製當前數組並返回副本.如何傳遞給concat()方法的是一個或多個數組,
則該方法會將這些數組中的每一項逗添加到結果數組中.若是傳遞的值不是數組,這些值就會被簡單地添加到結果數組的末尾.下面看一個列子
var colors=["red","green","blue"]; var color2=colors.concat("yellow",["black","brown"]); alert(color2);//red,green,blue,yellow,black,brown
2):slice()方法基於當前數組中的一或多個項建立一個新數組.
slice()方法能夠接收一或兩個參數,即要返回的起始和結束位置.
在只有一個參數的狀況下,slice()方法返回從該參數指定位置開始到當前數組末尾的全部項.
如何有兩個參數,該方法返回起始和結束位置之間的項——但不包括結束位置的項.slice()方法不會影響原始數組,下面看一個列子
var colors=["red","green","blue","yellow","black"]; colors.split(1);//green,blue,yellow,black colors.split(1,4)//green,blue,yellow
3):splice()方法恐怕要算是最強大的數組方法了,它有不少種用法。
splice()的主要用途是向數組的中部插入項,但使用這種方法的方式則有以下3種
a:刪除:能夠刪除任意數量的項,只需指定2個參數:要刪除的第一項的位置和要刪除的項數.
列如:splice(0,2)會刪除數組中的前兩項.
b:插入:能夠向指定位置插入任意數量的項,只須要提供3個參數:起始位置,0(要刪除的項數)和要插入的項.
如何要插入多個項,能夠再傳入第四,第五,以致任意多個項.
列如:splice(2,0,"red","green")會從當前數組的位置2開始插入字符串"red"和"green"
c:替換:能夠向指定位置插入任意數量的項,且同時刪除任意數量的項,只須要提供3個參數:起始位置,要刪除的項數和要插入的任意數量的項.
插入的項數沒必要和和刪除的項數相等.
列如:splice(2,1,"red","green")會刪除當前數組位置2的項,而後再從位置2開始插入字符串"red"和"green"
注:插入和替換方式相同,不一樣點就在於第2參數,爲0表示插入不刪除,大於0表示要刪除的數量
splice()方法始終都會返回一個數組,該數組中包含從原始數組中刪除的項(若是沒有刪除任何項,則會返回一個空數組).
下面有個列子用了上述3中splice()方法,以下:
var colors=["red","green","blue"]; var removed=colors.splice(0,1);//刪除第一項 alert(colors);//green,blue alert(removed);//red,返回的數組中只有一項 removed=colors.splice(1,0,"yellow","orange");//從位置1開始插入2條數據 alert(colors);//green,blue,yellow,orange alert(removed);//返回一個空數組 removed=colors.splice(1,1,"red","purple");//從位置1插入2條數據,並刪除位置1的數據 alert(colors);//green,red,purple,yellow,orange alert(removed);//yellow,返回的數組中只包含一項
兩個位置方法:indexOf()和lastIndexOf(),這兩個方法都接收兩個參數:要查找的項和(可選的)表示查找七點位置的索引.
1)indexOf():從數組的開頭(位置0)開始向後查找
2)lastIndexOf():從數組的末尾開始向前查找
這兩個方法都返回查找的項在數組中的位置,或者在沒找到的狀況下返回-1.
在比較第一個參數與數組中的每一項時,會使用全等操做符,也就是說,要求查找的項必須嚴格相等
下面寫了這2個方法的實例,以下:
var numbers=[1,2,3,4,5,4,3,2,1]; alert(numbers.indexOf(4));//3 返回第一個出現的4位置 alert(numbers.lastIndexOf(4));//5 返回最後一個出現的4位置 alert(numbers.indexOf(4,4));//5 從位置4開始查找第一個4出現的位置 alert(numbers.lastIndexOf(4,4));//3 從位置4開始查找最後一個4出現的位置 var person={name:"ToNi"}; var people=[{name:"ToNi"}]; var morePeople=[person]; alert(people.indexOf(person));//返回-1 必須嚴格相等,不只僅是值相等 alert(morePeople.indexOf(person));//返回0
本篇文章是參考JavaScript高級程序設計書籍
我看了書以後加以整理和本身本人的一些理解,須要能對你們有幫助,謝謝你們