<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # vue---reduce高級與filter去重 > reduce()方法可以搞定的東西,for循環,或者[forEach](https://so.csdn.net/so/search?q=forEach)方法有時候也可以搞定,那為啥要用reduce()?這個問題,之前我也想過,要說原因還真找不到,唯一能找到的是:通往成功的道路有很多,但是總有一條路是最捷徑的,亦或許reduce()逼格更高... arr.reduce(callback,\[initialValue\]) 參數是 回調函數 和初始值 callback (執行數組中每個值的函數,包含四個參數) ``` <pre class="calibre13">``` <span class="token5">1</span>、previousValue (上一次調用回調返回的值,或者是提供的初始值(initialValue)) <span class="token5">2</span>、currentValue (數組中當前被處理的元素) <span class="token5">3</span>、index (當前元素在數組中的索引) <span class="token5">4</span>、array (調用 reduce 的數組) ``` ``` initialValue (作為第一次調用 callback 的第一個參數。) 2、實例解析 initialValue 參數 先看第一個例子: ``` <pre class="calibre13">``` <span class="token2">var</span> arr <span class="token">=</span> <span class="token1">[</span><span class="token5">1</span><span class="token1">,</span> <span class="token5">2</span><span class="token1">,</span> <span class="token5">3</span><span class="token1">,</span> <span class="token5">4</span><span class="token1">]</span><span class="token1">;</span> <span class="token2">var</span> sum <span class="token">=</span> arr<span class="token1">.</span><span class="token3">reduce</span><span class="token1">(</span><span class="token2">function</span><span class="token1">(</span>prev<span class="token1">,</span> cur<span class="token1">,</span> index<span class="token1">,</span> arr<span class="token1">)</span> <span class="token1">{</span> console<span class="token1">.</span><span class="token3">log</span><span class="token1">(</span>prev<span class="token1">,</span> cur<span class="token1">,</span> index<span class="token1">)</span><span class="token1">;</span> <span class="token2">return</span> prev <span class="token">+</span> cur<span class="token1">;</span> <span class="token1">}</span><span class="token1">)</span> ``` ``` console.log(arr, sum); 打印結果: ``` <pre class="calibre13">``` <span class="token5">1</span> <span class="token5">2</span> <span class="token5">1</span> <span class="token5">3</span> <span class="token5">3</span> <span class="token5">2</span> <span class="token5">6</span> <span class="token5">4</span> <span class="token5">3</span> \<span class="token1">[</span><span class="token5">1</span><span class="token1">,</span> <span class="token5">2</span><span class="token1">,</span> <span class="token5">3</span><span class="token1">,</span> <span class="token5">4</span>\<span class="token1">]</span> <span class="token5">10</span> ``` ``` 這里可以看出,上面的例子index是從1開始的,第一次的prev的值是數組的第一個值。數組長度是4,但是reduce函數循環3次。 例子二: ``` <pre class="calibre13">``` <span class="token2">var</span> arr <span class="token">=</span> <span class="token1">[</span><span class="token5">1</span><span class="token1">,</span> <span class="token5">2</span><span class="token1">,</span> <span class="token5">3</span><span class="token1">,</span> <span class="token5">4</span><span class="token1">]</span><span class="token1">;</span> <span class="token2">var</span> sum <span class="token">=</span> arr<span class="token1">.</span><span class="token3">reduce</span><span class="token1">(</span><span class="token2">function</span><span class="token1">(</span>prev<span class="token1">,</span> cur<span class="token1">,</span> index<span class="token1">,</span> arr<span class="token1">)</span> <span class="token1">{</span> console<span class="token1">.</span><span class="token3">log</span><span class="token1">(</span>prev<span class="token1">,</span> cur<span class="token1">,</span> index<span class="token1">)</span><span class="token1">;</span> <span class="token2">return</span> prev <span class="token">+</span> cur<span class="token1">;</span> <span class="token1">}</span>,<span class="token5">0</span><span class="token1">)</span> <span class="token6">//注意這里設置了初始值</span> console<span class="token1">.</span><span class="token3">log</span><span class="token1">(</span>arr<span class="token1">,</span> sum<span class="token1">)</span><span class="token1">;</span> ``` ``` ``` <pre class="calibre13">``` 打印結果: <span class="token5">0</span> <span class="token5">1</span> <span class="token5">0</span> <span class="token5">1</span> <span class="token5">2</span> <span class="token5">1</span> <span class="token5">3</span> <span class="token5">3</span> <span class="token5">2</span> <span class="token5">6</span> <span class="token5">4</span> <span class="token5">3</span> \<span class="token1">[</span><span class="token5">1</span><span class="token1">,</span> <span class="token5">2</span><span class="token1">,</span> <span class="token5">3</span><span class="token1">,</span> <span class="token5">4</span>\<span class="token1">]</span> <span class="token5">10</span> ``` ``` 這個例子index是從0開始的,第一次的prev的值是我們設置的初始值0,數組長度是4,reduce函數循環4次。 結論:`如果沒有提供initialValue,reduce 會從索引1的地方開始執行 callback 方法,跳過第一個索引。如果提供initialValue,從索引0開始。` 注意:如果這個數組為空,運用reduce是什么情況? var arr = \[\]; var sum = arr.reduce(function(prev, cur, index, arr) { console.log(prev, cur, index); return prev + cur; }) //報錯,"TypeError: Reduce of empty array with no initial value" 但是要是我們設置了初始值就不會報錯,如下: var arr = \[\]; var sum = arr.reduce(function(prev, cur, index, arr) { console.log(prev, cur, index); return prev + cur; },0) console.log(arr, sum); // \[\] 0 ## 簡單用法 ``` <pre class="calibre13">``` var arr <span class="token">=</span> <span class="token1">[</span><span class="token5">1</span><span class="token1">,</span> <span class="token5">2</span><span class="token1">,</span> <span class="token5">3</span><span class="token1">,</span> <span class="token5">4</span><span class="token1">]</span><span class="token1">;</span> var sum <span class="token">=</span> arr<span class="token1">.</span><span class="token3">reduce</span><span class="token1">(</span><span class="token1">(</span>x<span class="token1">,</span>y<span class="token1">)</span><span class="token">=</span><span class="token">></span>x<span class="token">+</span>y<span class="token1">)</span> var mul <span class="token">=</span> arr<span class="token1">.</span><span class="token3">reduce</span><span class="token1">(</span><span class="token1">(</span>x<span class="token1">,</span>y<span class="token1">)</span><span class="token">=</span><span class="token">></span>x<span class="token">*</span>y<span class="token1">)</span> console<span class="token1">.</span><span class="token3">log</span><span class="token1">(</span> sum <span class="token1">)</span><span class="token1">;</span> <span class="token6">//求和,10</span> console<span class="token1">.</span><span class="token3">log</span><span class="token1">(</span> mul <span class="token1">)</span><span class="token1">;</span> <span class="token6">//求乘積,24</span> ``` ``` ``` <pre class="calibre13">``` let names <span class="token">=</span> <span class="token1">[</span><span class="token4">'Alice'</span><span class="token1">,</span> <span class="token4">'Bob'</span><span class="token1">,</span> <span class="token4">'Tiff'</span><span class="token1">,</span> <span class="token4">'Bruce'</span><span class="token1">,</span> <span class="token4">'Alice'</span><span class="token1">]</span><span class="token1">;</span> let nameNum <span class="token">=</span> names<span class="token1">.</span><span class="token3">reduce</span><span class="token1">(</span><span class="token1">(</span>pre<span class="token1">,</span>cur<span class="token1">)</span><span class="token">=</span><span class="token">></span><span class="token1">{</span> <span class="token2">if</span><span class="token1">(</span>cur <span class="token2">in</span> pre<span class="token1">)</span><span class="token1">{</span> pre<span class="token1">[</span>cur<span class="token1">]</span><span class="token">++</span> <span class="token1">}</span><span class="token2">else</span><span class="token1">{</span> pre<span class="token1">[</span>cur<span class="token1">]</span> <span class="token">=</span> <span class="token5">1</span> <span class="token1">}</span> <span class="token2">return</span> pre <span class="token1">}</span><span class="token1">,</span><span class="token1">{</span><span class="token1">}</span><span class="token1">)</span> console<span class="token1">.</span><span class="token3">log</span><span class="token1">(</span>nameNum<span class="token1">)</span><span class="token1">;</span> <span class="token6">//{Alice: 2, Bob: 1, Tiff: 1, Bruce: 1}</span> ``` ``` ``` <pre class="calibre14">``` let arr <span class="token">=</span> <span class="token1">[</span><span class="token5">1</span><span class="token1">,</span><span class="token5">2</span><span class="token1">,</span><span class="token5">3</span><span class="token1">,</span><span class="token5">4</span><span class="token1">,</span><span class="token5">4</span><span class="token1">,</span><span class="token5">1</span><span class="token1">]</span> let newArr <span class="token">=</span> arr<span class="token1">.</span><span class="token3">reduce</span><span class="token1">(</span><span class="token1">(</span>pre<span class="token1">,</span>cur<span class="token1">)</span><span class="token">=</span><span class="token">></span><span class="token1">{</span> <span class="token2">if</span><span class="token1">(</span><span class="token">!</span>pre<span class="token1">.</span><span class="token3">includes</span><span class="token1">(</span>cur<span class="token1">)</span><span class="token1">)</span><span class="token1">{</span> <span class="token2">return</span> pre<span class="token1">.</span><span class="token3">concat</span><span class="token1">(</span>cur<span class="token1">)</span> <span class="token1">}</span><span class="token2">else</span><span class="token1">{</span> <span class="token2">return</span> pre <span class="token1">}</span> <span class="token1">}</span><span class="token1">,</span><span class="token1">[</span><span class="token1">]</span><span class="token1">)</span> console<span class="token1">.</span><span class="token3">log</span><span class="token1">(</span>newArr<span class="token1">)</span><span class="token1">;</span><span class="token6">// [1, 2, 3, 4]</span> ``` ```
                  <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>

                              哎呀哎呀视频在线观看