• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            專職C++

            不能停止的腳步

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              163 Posts :: 7 Stories :: 135 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(28)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            前面一篇,我們寫了數組的基礎,在這里則會把主要的方法和應用列出來. 

            數組方法

            檢測數組 Array.isArray

            ECMAScript 5 新增了 Array.isArray() 方法。這個方法的目的是最終確定某 
            個值到底是不是數組,而不管它是在哪個全局執行環境中創建的。這個方法的用法如下。

            1. if (Array.isArray(value)){
            2. //對數組執行某些操作
            3. }

            位置方法 indexOf和lastIndexOf


            • indexOf(searchvalue,fromindex) 從數組的頭開始向后查找
            • indexOf和lastIndexOf(searchvalue,fromindex) 從數組的尾開始向前查找

            接收兩個參數:

            • searchvalue 要查找的項
            • fromindex (可選的)表示查找起點位置的索引 
              返回 
              要查找的項在數組中的位置,或者在沒找到的情況下返回-1
            1. var data = [2, 5, 7, 3, 5];
            2. console.log(data.indexOf(5, "x")); // 1 ("x"被忽略)
            3. console.log(data.indexOf(5, "3")); // 4 (從3號位開始搜索)
            4. console.log(data.indexOf(4)); // -1 (未找到)
            5. console.log(data.indexOf("5")); // -1 (未找到,因為5 !== "5")

            迭代方法

            共有五個迭代方法every, filter, forEach, map, some 
            每個方法的的參數是一個回調函數

            迭代方法(function callback(item,index,array) {});

            回調函數都是三個參數

            • item 數組的元素
            • index 元素在數組中的位置
            • array 數組對象本身 
              同時,有必要的回調函數要返回truefalse

            • every :對數組中的每一項運行給定函數,如果該函數對每一項都返回 true ,則返回 true 。相當于是每項做與操作
            • filter :對數組中的每一項運行給定函數,返回該函數會返回 true 的項組成的數組。
            • forEach :對數組中的每一項運行給定函數。這個方法沒有返回值。
            • map :對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組。
            • some :對數組中的每一項運行給定函數,如果該函數對任一項返回 true ,則返回 true 。相當于是每項做或操作

            例如:

            every

            1. let a = [1,2,3,99,34,33];
            2. let v1 = a.every((item,index,array)=>{
            3. return item > 2;
            4. });
            5. //v1的值為false 因為a[0],a[1]不合條件
            6. let v2 = a.every((item,index,array)=>{
            7. return item > 0;
            8. });
            9. //v2的值為true

            filter

            1. let a = [1,2,3,99,34,33];
            2. let v = a.filter((item,index,array)=>{
            3. return item > 2;
            4. });
            5. //v是過濾后的新數組 [3,99,34,33]

            foreach

            1. a.forEach((item)=>{
            2. console.log(item);
            3. });
            4. //會依次打印出每個元素的值
            5. a.forEach((item,index)=>{
            6. console.log(index,item);
            7. });
            8. //會依次打印出每個元素的下標和值

            map

            1. let a = [1,2,3,99,34,33];
            2. let v = a.map((item,index,array)=>{
            3. return item * item;
            4. });
            5. //v是map后的新數組 [1,4,9,9801,1156,1089]

            some

            1. let a = [1,2,3,99,34,33];
            2. let v1 = a.some((item,index,array)=>{
            3. return item > 2;
            4. });
            5. //v1的值為true 因為a[2],a[3]等元素值>2
            6. let v2 = a.some((item,index,array)=>{
            7. return item > 100;
            8. });
            9. //v2的值為false ,因為沒有元素值大于100

            歸并方法


            • reduce 從左到右累加
            • reduceRight 從右到左累加

            這兩個方法,都會遍歷所有數組元素 
            參數是一個回調函數

            歸并方法 (function callback(prev, cur, index, array){});

            • prev 前一個值
            • cur 當前元素
            • index 該元素在數組中的位置
            • array 數組對象本身

              例子

            1. let a = [1,2,3,99,34,33];
            2. let s = a.reduce((pre,cur,index,array)=>{
            3. console.log(pre,cur,index);
            4. return pre+cur;
            5. });
            6. //1 2 1t REPLServer.<anonymous> (repl.js:538:10)
            7. //3 3 2t emitOne (events.js:101:20)
            8. //6 99 3 REPLServer.emit (events.js:188:7)
            9. //105 34 4
            10. //139 33 5

            數組棧方法

            數組可以像棧那樣使用 
            push方法,表示在數組最后加入指定的元素,可以一次增加多個數組 
            pop方法,表示將數組的最后一個刪除,并通過pop方法返回,如果沒有元素了,則返回undefined

            1. a.push(100);
            2. a.push(99);
            3. console.log(a.pop());
            4. console.log(a.pop());

            結果輸出 
            99 
            100

            隊列方法

            數組可以像隊列那樣使用 
            用push方法,在隊尾加元素 
            用shift在隊頭取元素 
            用unshift在隊頭推入元素

            1. let a=[];
            2. a.push(1,2,3);
            3. Console.log(a.shift());
            4. Console.log(a.shift());
            5. Console.log(a.shift());

            然后顯示為1,2,3剛好和棧相反

            1. let a = [1,2,3];
            2. a.unshift(4);
            3. a.unshift(5,6,7);

            結果a為[ 5, 6, 7, 4, 1, 2, 3 ]

            反轉數組方法

            用reverse方法,反轉數組 
            如:

            1. let a = [1,2,3,4,5];
            2. a.reverse()

            結果: 
            [ 5, 4, 3, 2, 1 ]

            排序

            用sort可以對數組排序

            1. function compare(v1,v2) {
            2. return v1>v2;
            3. }
            4. // a.sort();默認將元素用toString,再比較字符串排序
            5. let a=[2,22,222,1,11,111];
            6. let v1 = a.sort();
            7. //則v1=[1,11,111,2,22, 222]
            8. //**這是不是按數值大小來排序,是按字會串大小來的**
            9. //可以指定的比較方法a.sort(compare);
            10. //則結果如下:
            11. let v2 = a.sort(compare);
            12. //則v2 = [ 1, 2, 11, 22, 111, 222 ]

            連接數組

            用concat可以將一個或多數組連起來,并不會改變當前數組本身

            1. a = [1,2,3];
            2. b = a.concat(99); //b=[1,2,3,99];
            3. B = a.concat(99,[4,5]); //b=[1,2,3,99,4,5];

            基于原有數組創建新數組

            用slice基于當前數組中的一或多個項創建一個新數組,原數組不會變 
            slice(開始下標,結束下標) ; 并不包括結束下標的那個元素

            1. let a = [1,2,3,4,5,6];
            2. b=a.slice(2,4); //b=[3,4];

            強大的splice

            這個方法恐怕要算是最強大的數組方法了 
            splice的返回值,則操作后的元素組成的數組

            刪除

            可以刪除任意數量的元素,只需指定 2個參數:

            • startIndex 開始刪除的位置
            • removeCount 要刪除的元素個數。 
              例如, a.splice(0,2) 會刪除數組中的前兩元素。
            1. let a = [1,2,3,4,5,6];
            2. let b = a.splice(1,2);
            3. //執行后,結果是
            4. //a = [ 1, 4, 5, 6 ]
            5. //b = [ 2, 3 ]

            插入

            可以向指定位置插入任意數量的元素,只需提供 3個參數:

            • 起始位置、
            • 0(要刪除的元素個數,做為插入功能,這值必須為0)
            • 要插入的元素
            • 如果要插入多個元素, 
              還可以繼續提供參數,表示是要插入的元素。 
              例如,
            1. let a = [1,2,3,4,5,6];
            2. let b = a.splice(1,0,91,92,93,94);
            3. //執行后結果是
            4. //a = [ 1, 91, 92, 93, 94, 2, 3, 4, 5, 6 ]
            5. //b = [ ]

            替換

            可以向指定位置插入任意數量的元素,且同時刪除任意數量的元素,只需指定 3 個參數:

            • 起始位置、
            • >0的值(要刪除的元素個數,做為替換功能,這值必須大于0)
            • 要插入的元素
            • 如果要插入多個元素, 
              還可以繼續提供參數,表示是要插入的元素。
            1. let a = [1,2,3,4,5,6];
            2. let b = a.splice(1,2,91,92,93,94);
            3. //執行后結果是
            4. //a = [ 1, 91, 92, 93, 94, 4, 5, 6 ]
            5. //b = [ 2, 3 ]

            最后

            對于迭代方法和歸并方法只是一個簡化代碼的作用,可能這些方法功能非常見,所以干脆默認提從了這兩組方法。對于js的數組,使用起來非常方法,相比c/c++真是無與倫比…。在C++11標準后,也可以同樣提供一個強大的動態數組。但是js的數組,可以存放任何元素,這個是C++不能比的,雖然可以實現,但是代價就有點大了。相對來說,現在版本的java和C#,則可以。因為java所有的都是Object…

            posted on 2017-03-07 18:03 冬瓜 閱讀(1482) 評論(0)  編輯 收藏 引用 所屬分類: javascript
            久久人人爽人人爽人人片AV不| 久久精品亚洲乱码伦伦中文| 69久久精品无码一区二区| 久久不见久久见免费视频7| 久久精品国产99国产精品澳门 | 中文精品久久久久国产网址| 国产精品久久久99| 久久午夜福利无码1000合集| 99久久婷婷国产一区二区| 思思久久99热免费精品6| 99久久er这里只有精品18| 亚洲国产成人久久综合一区77| 97热久久免费频精品99| 91麻豆国产精品91久久久| 99久久精品国产一区二区三区 | 欧美大香线蕉线伊人久久| 国产69精品久久久久99| 无码久久精品国产亚洲Av影片 | 日本精品一区二区久久久| 久久综合狠狠综合久久| 人妻中文久久久久| 久久夜色精品国产亚洲| 午夜精品久久久久久99热| 青青热久久国产久精品 | 激情五月综合综合久久69| 亚洲成色WWW久久网站| 久久中文字幕人妻熟av女| 久久久免费观成人影院| 青草影院天堂男人久久| 国产V亚洲V天堂无码久久久| 无码精品久久久久久人妻中字| 久久综合视频网| 伊人久久大香线蕉精品不卡 | 中文字幕无码精品亚洲资源网久久| 久久99精品久久久久久不卡| 久久青草国产手机看片福利盒子| 久久精品亚洲一区二区三区浴池 | 999久久久无码国产精品| 狠狠色丁香久久婷婷综合五月| 亚洲AV无码久久| 久久夜色精品国产噜噜亚洲AV|