<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 功能強大 支持多語言、二開方便! 廣告
                ## 1、 棧 >棧是一種 LIFO(Last-In-First-Out, 后進先出)的數據結構,也就是先進后出的理念,而棧中項插入(叫做堆入)和移除(叫做彈出),只發生在一個位置 --棧的頂部,我們可以把棧想象為一個開口向上的容器,如圖所示: ![](https://img.kancloud.cn/a4/46/a446f06aec2990cd9dc3c65e0cf8a9be_293x290.png) * 存入數據,棧的變化: >最開始的時候棧中不含有任何數據,叫做空棧,此時棧頂就是棧底,然后數據從棧頂進入,棧頂和棧底分離,整個棧的當前容量變大;數據出棧時,數據從棧頂彈出,棧頂下移,整個棧的容量變小 * `push`和`pop`實現棧的行為: >`push` 操作實現了在棧頂的堆入,返回改變后數組的長度; >`pop`的操作實現了在棧底的彈出,返回移除那項的內容。 * 在Chrome瀏覽器控制臺輸出堆棧的效果如下圖所示: ![](https://img.kancloud.cn/3c/4f/3c4f8226133a189901080e7a89eb10df_651x588.png) ## 2、隊列 >隊列是一種FIFO(First-In-First-Out, 先進先出)。隊列在列表的末端添加項,從列表的前端移除項,如下圖所示: ![](https://img.kancloud.cn/0a/f3/0af309c452431746cc0dd5b9b845c83c_500x168.png) * `unshift`和`pop`實現棧的行為(用`shift`和`push`也可以): >`unshift` 操作實現了在隊列的添加,返回改變后數組的長度; * 在Chrome瀏覽器控制臺輸出隊列的效果如下圖所示: ![](https://img.kancloud.cn/6e/1f/6e1f053c5bf3279e0606ea48cc213a7d_670x590.png) ## 3、數組操作api性能分析 * `push()`和`unshift()`性能分析 >`push()`操作是在數組的尾部添加的,不影響其他數據的位置變化,但是`unshift`是在數據的頭部添加的,每次的添加都會影響后面的數據忘后面移動一位,影響性能。 ``` var arr = [ ]; var startTime = +new Date(); //+new Date()相當于new Date().valueOf(),返回當前時間的毫秒數 // push性能測試 for (var i = 0; i < 100000; i++) {   arr.push(i); } var endTime = +new Date(); console.log("調用push方法往數組中添加100000個元素耗時"+(endTime-startTime)+"毫秒"); startTime = +new Date(); arr = [ ]; // unshift性能測試 for (var i = 0; i < 100000; i++) {   arr.unshift(i); } endTime = +new Date(); console.log("調用unshift方法往數組中添加100000個元素耗時"+(endTime-startTime)+"毫秒"); ``` 瀏覽器輸出結果: ![](https://img.kancloud.cn/71/58/7158165a0abed5e75abc8ccbe23b5b64_390x49.png) * `reverse()`性能分析 ``` var arr = [ ], s = +new Date; for (var i = 0; i < 100000; i++) {    arr.push(i); } console.log("調用reverse方法將數組里面的100000元素的順序反轉耗時:"+(+new Date - s)+"毫秒"); ``` 瀏覽器輸出的結果: ![](https://img.kancloud.cn/02/43/0243dec938085ff693d4e259c59ee447_450x33.png) 總結:在大數據的數組操作是,盡量在數據的尾部操作,如果需要操作數組頭部的內容,可以通過數組的`reverse()`方法進行反轉操作。 例題 ![](https://img.kancloud.cn/ea/98/ea98d9a88e527f31177111b46893f4d5_1080x2400.png)
                  <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>

                              哎呀哎呀视频在线观看