回想下本身的工做歷程 一年多的ios開發眨眼間就過去了 不過這一切尚未結束,緊隨其後的即是前段開發,雖然頂點基礎都沒有,可是仍是經過個人不懈努力最終成功轉型,雖然剛開始是經過jq直接入門的 可是回想起來好像本身也沒有多學多少東西,今天,就是在今天我又從新翻開了javascript書,瀏覽了裏面的各類方法,感受本身要學習的仍是不少不少的,那麼今天我就首先從數組開始來說解下我今天的收穫,提起到數組,相信作過開發的是熟悉的不能再熟悉了,不過談到裏面的種種方法,相信像我同樣的菜鳥加小白確定是既熟悉又陌生的,那麼下面就緊隨個人步伐踏入數組的世界吧,來學習數組的博大精深.javascript
1.數組的建立在這裏我就很少說了,下面即是我學習的第一個知識點了如何檢測一個對象是否是數組:java
固然檢測數組的方法不僅有一種,下面我就給你們展現兩種原生的方法,上代碼:ios
/** * @description 檢測對象是否是數組(這個方法有弊端,不推薦使用,這種在多個全局執行環境狀況下會出現問題,慎用) * @param {檢測對象} * @return {[無返回值]} */ function checkArray(value){ if (value instanceof Array) { alert(1111); } } var check = [1,2,3]; checkArray(check); /** * @return {無返回值} */ function checkArray2(value){ if (Array.isArray(value)) { alert('推薦方法'); } } checkArray2(check);
以上code即是檢測數組的兩種方法.數組
2.數組的棧方法(所謂棧方法也就是說,數組能夠表現的像棧同樣,後者是指能夠限制插入項和刪除項,棧是一種LIFO(後進先出)的數據結構,也就是最後添加的最先被移除,而棧中項的插入叫作推入,移除叫作彈出,push和pop方法是針對數組插入元素和移除元素的方法):數據結構
push():能夠接受任意數量的參數,並返回修改後數組的長度;函數
pop():從數組末尾移除元素,減小數組長度,並返回移除的元素;學習
下面附上實例供你們參考:spa
var colors = [0,1,5,10,15]; alert(colors); var returnNew = colors.push('a','b','c'); alert(returnNew); var delnew = colors.pop(); alert(delnew);
以上就是數組的棧方法!code
同時和pop()相反的方法是shift(),他能夠從數組的最前邊移除項並返回,而且能夠利用shift()和push()方法模擬隊列操做(先進先出);對象
3.數組的重排序:
說到數組的排序不少人確定會首先想起來sort()和reverse()方法,可是卻不知sort()方法只是對字符串進行排序,不是那麼的嚴謹而reverse()方法則是對數組進行顛倒操做,並無實現排序,因此要想很好的完美的排序咱們能夠在sort()方法中傳入排序函數實現,例子以下:
/** * @description [比較函數] * @param {比較大小} * @param {比較大小} * @return {比較結果} */ function compare(value1,value2){ if (value1>value2) { return -1; } else if(value1==value2){ return 0; } else { return 1; } } var ary1 = ['yellow','red','blue']; var ary2 = ['1','2','3','4']; var arybig = ary1.concat(ary2, 'black');//合併數組 var sliceary=arybig.slice(2,4);//分割數組,都不影響原數組,只是拷貝返回的是從開始位置到結束位置的全部元素 document.write('<br>'+'數組1:'+ary1+'<br>'+'數組2:'+ary2+'<br>'+'大數組:'+arybig+'分割數組:'+sliceary+'<br>');
4.splice()方法的使用,其方法能夠刪除元素,同時也能夠向數組指定位置中插入元素,此方法算是功能最強大的方法之一了,下面舉幾個列子讓你們看看,順便說一句此方法不像上面的兩個方法(concat和slice)splice是在修改原數組的基礎上插入值得,該方法返回的是從數組中刪除的值:
// /* // 數組splice的使用 // */ var spliAry = [1,2,3,4,5,6,7,8]; var a = spliAry.splice(1, 3);//從下表爲1的位置開始刪除3個元素返回[2,3,4] var b = spliAry.splice(1, 0,'a','b','c');//添加三個元素;返回空數組 var c = spliAry.splice(1, 3,'a','c','e');//刪除並添加 返回[2,3,4] document.write(spliAry+'<br>'+a+'<br>'+b+'<br>'+c+'<br>');
5.數組的位置方法(indexof和lastindexof)
這兩個方法均可以接受兩個參數,第一個參數是必選的(查找項),第二個參數是可選的也就是查找的起始位置;二者惟一的不一樣就是查找順序不一樣,前者是從數組開始查找,後者則是從數組末尾開始查找知道找到指定元素位置,若是未查到則返回-1,若是查到則返回該元素在數組中的位置
6.數組的迭代方法
1.every()對數組每一項運行指定函數,若是該函數每一項都返回true,則返回true;
2.filter()對數組每一項運行指定函數,返回返回true元素組成的數組;
3.forEach()對數組每一項運行給定函數,該方法沒有返回值;
4.map()對數組每一項運行給定函數,該方法返回每次函數調用結果組成的數組;
5.some()對數組每一項運行給定函數,若是數組中任何一項知足條件返回true,則返回true;
以上方法都不會修改原數組中的值.下面分別舉例說明:
var array = [1,4,6,2,7,3]; var everyitem = array.every(function(item,index,array){ return item>2; }) document.write(everyitem);//輸出false var everyitem = array.some(function(item,index,array){ return item>2; }) document.write(everyitem);//輸出true var everyitem = array.map(function(item,index,array){ return item*2; }) document.write(everyitem);//輸出[2,8,12,4,14,6] var everyitem = array.filter(function(item,index,array){ return item>2; }) document.write(everyitem);//輸出[4,6,7,3]
7.數組的縮小方法reduce()和reduceRight(),二者惟一的區別就是一個從數組開始另外一個是從數組結束,這兩個方法均可以接受四個參數,第一個是數組的前一項,第二個是當前項,索引值和數組,因此說這兩個方法的區別就是取決於從那頭開始便利數組,下面附上簡單code示例:
var array = [1,4,6,2,7,3]; var result = array.reduce(function(prev,cur,index,array){ return prev+cur; }) document.write(result);//輸出23 也就是1+4+6+2+7+3 var result = array.reduceRight(function(prev,cur,index,array){ return prev+cur; }) document.write(result);//輸出23 也就是3+7+2+6+4+1
輸出結果都是23,只是相加順序不一樣罷了,因此這就是二者惟一區別了,以上就是我今天對array的認識, 也算是掌握了新的只是,在這裏我通通記錄下來,但願可讓更多的友友看到,可以幫助更多的人,好了今天的學習與積累就到這裏了,明天有時間還會繼續,但願你們多多關照,有什麼遺漏的還望指出或者給出建議,Bye!