<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 高階函數的概念 高階函數英文叫Higher-order function。那么什么是高階函數? JavaScript的函數其實都指向某個變量。既然變量可以指向函數,函數的參數能接收變量,那么一個函數就可以接收另一個函數作為參數,這種函數就稱之為高階函數。 一個最簡單的高階函數: ~~~ function add(x, y, f) { return f(x) + f(y); } ~~~ 當我們調用`add(-5, 6, Math.abs)`時,參數`x`,`y`和`f`分別接收`-5`,`6`和函數`Math.abs`,根據函數定義,我們可以推導計算過程為: ~~~ x = -5; y = 6; f = Math.abs; f(x) + f(y) ==> Math.abs(-5) + Math.abs(6) ==> 11; return 11; ~~~ 用代碼驗證一下: ~~~ add(-5, 6, Math.abs); // 11 ~~~ > 編寫高階函數,就是讓函數的參數能夠接收別的函數。 # 映射函數map **定義:對數組中的每個元素進行處理,得到新的數組;** **特點:不改變原數組;** 舉例說明,比如我們有一個函數, ```[math] f(x)=x^2 ``` 要把這個函數作用在一個數組`[1, 2, 3, 4, 5, 6, 7, 8, 9]`上,就可以用map實現如下: 由于map()方法定義在JavaScript的Array中,我們調用Array的map()方法,傳入我們自己的函數,就得到了一個新的Array作為結果: ```js function pow(x) { return (x*x) } var arr = [1,2,3,4,5,6,7,8,9]; arr.map(pow);//[1, 4, 9, 16, 25, 36, 49, 64, 81] ``` map()傳入的參數是pow,即函數對象本身。 map()作為高階函數,事實上它把運算規則抽象了,因此,我們不但可以計算簡單的f(x)=x2,還可以計算任意復雜的函數,比如,把Array的所有數字轉為字符串: ```js var arr = [1,2,3,4,5,6,7,8,9]; arr.map(String);//['1', '2', '3', '4', '5', '6', '7', '8', '9'] ``` # reduce Array的reduce()把一個函數作用在這個Array的\[x1, x2, x3...\]上,這個函數必須接收兩個參數,reduce()把結果繼續和序列的下一個元素做累積計算,其效果就是: ``` [x1, x2, x3, x4].reduce( f(x,y) ) //相當于 f(f(f(x1, x2), x3), x4) ``` 比方說對一個Array求和,就可以用reduce實現: ```js var arr = [1,3,5,7,9]; arr.reduce(function(x, y) { return x + y; });// 25 ``` ## 實踐 利用reduce()求積: ```js function product(arr) { return arr.reduce(function (x,y) { return parseInt(x)*parseInt(y); }); } // 測試: if (product([1, 2, 3, 4]) === 24 && product([0, 1, 2]) === 0 && product([99, 88, 77, 66]) === 44274384) { alert('測試通過!'); }else { alert('測試失敗!'); } ``` > 試一試先用map將整個數組轉換為Int然后在做乘法 # filter ```js var ages = [32, 33, 16, 40]; function checkAdult(age) { return age >= 18; } function myFunction() { let data = ages.filter(checkAdult); return data; } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看