一年後重翻javascript

     回想下本身的工做歷程  一年多的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!

相關文章
相關標籤/搜索