」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > JS 堆疊 DS&A 介紹

JS 堆疊 DS&A 介紹

發佈於2024-08-26
瀏覽:313

如果您使用任何現代設備,您可能會遇到堆疊操作,即使您沒有意識到。堆疊是許多程式設計任務的基礎,從管理函數呼叫到啟用撤銷操作。

什麼是堆疊?

堆疊是一種線性資料結構,遵循以 LIFO 或 FILO 結構組織資料的操作順序。

LIFO:後進先出。

FILO:先進後出。

堆疊用於對元素集合執行操作,例如新增和刪除元素、顯示頂部元素以及顯示集合是否為空或已滿。

例如:

當您正在使用網路瀏覽器造訪 www.ESPN.com 時,您不小心點擊了芝加哥白襪隊棒球門票的廣告。我們添加到我們的堆疊中,也許不是故意的,但現在它位於我們堆疊的頂部。然後我們意識到芝加哥白襪隊已經連續輸了 15 場比賽。好吧...讓我們點擊後退按鈕(從堆疊頂部刪除該元素)。

JS stacks DS&A intro

是的,就在那裡。這演示了堆疊操作中的後進先出原則,我們將從歷史記錄(或堆疊)中刪除(刪除)最後訪問的頁面以返回 www.ESPN.com ...也許明年白襪隊的。

堆疊操作經常用於需要維護順序 Web 瀏覽器歷史記錄、文字編輯器上的撤消和重做以及函數呼叫堆疊等的應用程式。

更改堆疊時常用的函數如下:

.Push = 將元素加入堆疊中。

.pop = 從堆疊中刪除頂部元素。

.peek = 顯示堆疊頂部元素。

.length/.size = 決定堆疊中索引的總數。 JavaScript 使用 (.length)

.isEmpty = 檢查堆疊是否為空。

.isFull = 檢查堆疊是否已滿;如果陣列有固定大小。

Stacks 資料結構可以使用 stacks 類別或常規陣列建立。

不使用類別實作堆疊:

在沒有 stacks 類別的情況下執行堆疊操作時,我們用陣列模擬堆疊操作。

下面將是使用堆疊操作來反轉數字數組的範例。我將使用 JSON.stringify 將陣列結果的值與所需的陣列結果進行比較。

前任:

// Reverse an array using stack operations

let number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; // original array
let numberList = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]; // reversed array
let ordernumberList = []; // array to store the reversed order

// Loop through the numberList array to reverse its order
for (var i = 0; i 



我想強調最後的 if-else 語句。我使用 JSON.stringify 方法來比較兩個數組,因為如果沒有它,比較將返回 false,從而觸發 else 條件,即使數組具有相同的內容。發生這種情況是因為,在 JavaScript 中比較數組時,比較檢查的是它們的引用(即它們的記憶體位置),而不是數組內的實際內容。

正如我們在整個 for 循環中看到的,我們的方法 .pop(刪除)首先(LIFO)numberList 數組中的最後一個索引。然後使用 .push 方法將其新增至新陣列 ordernumberList 中,將原始陣列反轉。

FILO 出現在新數組中,如果使用堆疊操作進行修改,則推入 ordernumberList 數組的第一個索引將是最後一個索引 (FILO)。

在本文中,我們探討了堆疊如何使用 LIFO 和 FILO 原理進行操作,並在 JavaScript 中實作了堆疊操作。理解堆疊對於許多程式設計任務至關重要,正如在網頁瀏覽等現實場景中所看到的那樣。

版本聲明 本文轉載於:https://dev.to/cedsengine/js-stacks-dsa-intro-bl3?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • ## 如何有效分析 PHP 記憶體使用:Xdebug 替代方案和最佳實踐
    ## 如何有效分析 PHP 記憶體使用:Xdebug 替代方案和最佳實踐
    分析 PHP 記憶體消耗您尋求一種方法來檢查 PHP 頁面的記憶體使用量。具體來說,您的目標是確定資料的記憶體分配並識別導致大量記憶體消耗的函數呼叫。 Xdebug 的限制雖然 Xdebug 提供了跟踪功能,提供內存增量信息,其豐富的數據可能令人難以承受。如果細粒度過濾選項可用,問題就可以解決。然而...
    程式設計 發佈於2024-11-07
  • 如何在虛擬 DOM 中渲染元件以及如何最佳化重新渲染
    如何在虛擬 DOM 中渲染元件以及如何最佳化重新渲染
    构建现代 Web 应用程序时,高效更新 UI(用户界面)对于保持应用程序快速响应至关重要。许多框架(如 React)中使用的常见策略是使用 虚拟 DOM 和 组件。本文将解释如何使用 Virtual DOM 渲染组件,以及如何优化重新渲染以使 Web 应用程序不会变慢。 1.什么是虚...
    程式設計 發佈於2024-11-07
  • CRUD 操作:它們是什麼以及如何使用它們?
    CRUD 操作:它們是什麼以及如何使用它們?
    CRUD 操作:它們是什麼以及如何使用它們? CRUD 操作(建立、讀取、更新和刪除)是任何需要資料管理的應用程式的基礎。對於開發人員來說,了解這些操作非常重要,因為它們提供了我們有效與資料庫互動所需的基本功能。在這篇文章中,我將透過展示如何將 CRUD 操作整合到我的 Yoga ...
    程式設計 發佈於2024-11-07
  • 推出免費 Java 實用程式包
    推出免費 Java 實用程式包
    面向 Java 后端开发人员的快速且易于使用的编程工具包 在我作为管理员和开发人员的职业生涯中,我多次从无数的免费软件和开源产品中受益。因此,我很自然地也为这个社区做出贡献。 这个 Java 类集合是在各种项目过程中创建的,并将进一步开发。我希望这个工具也能为您服务。 https://java-ut...
    程式設計 發佈於2024-11-07
  • 如何在 PHP Foreach 迴圈中檢索巢狀數組的數組鍵?
    如何在 PHP Foreach 迴圈中檢索巢狀數組的數組鍵?
    PHP:在Foreach 循環中檢索數組鍵在PHP 中,使用foreach 循環迭代關聯數組可以存取這兩個值和鑰匙。但是, key() 函數僅傳回目前值的鍵,這在處理巢狀數組時可能是不夠的。 例如,考慮這樣的陣列:<?php $samplearr = array( 4722 =>...
    程式設計 發佈於2024-11-07
  • 如何將 MySQL 表中的 Latin1 字元轉換為 UTF-8?
    如何將 MySQL 表中的 Latin1 字元轉換為 UTF-8?
    將UTF8 表上的Latin1 字元轉換為UTF8您已確定您的PHP 腳本缺少必要的mysql_set_charset 函數以確保正確處理UTF-8 字元。儘管實施了此修復,您現在仍面臨著修正包含儲存在 UTF8 表中的 Latin1 字元的現有行的挑戰。 要解決此問題,您可以利用 MySQL 函數...
    程式設計 發佈於2024-11-07
  • 如何使用 Zapcap API(字幕 API)
    如何使用 Zapcap API(字幕 API)
    將 ZapCap 的自動視訊處理 API 整合到您現有的系統中是一個簡單的過程,旨在最大限度地降低複雜性並最大限度地提高效率。 ZapCap 提供開發人員友好的 API 文檔,以確保無縫入門。 逐步整合指南 步驟 1:在 ZapCap 取得您的 API 金鑰 在開始之前...
    程式設計 發佈於2024-11-07
  • 探索引導元件
    探索引導元件
    Bootstrap 5 是最受歡迎的前端框架之一,它帶來了一系列有用的組件和實用程序,可幫助開發人員快速構建響應靈敏且具有視覺吸引力的網站。 牌 卡片是 Bootstrap 5 中的多功能元件,可讓您以乾淨、有組織的方式顯示內容。它們非常適合以美觀且實用的方式展示資訊。 ...
    程式設計 發佈於2024-11-07
  • 簡化 SVG 管理:將路徑轉換為單一 JS 常數文件
    簡化 SVG 管理:將路徑轉換為單一 JS 常數文件
    构建 React.js 应用程序时,有效管理 SVG 图标至关重要。 SVG 提供了响应式设计所需的可扩展性和灵活性,但在大型项目中处理它们可能会变得很麻烦。这就是 svg-path-constants 的用武之地,它是一个 CLI 工具,旨在通过将 SVG 路径转换为可重用常量来简化 SVG 工作...
    程式設計 發佈於2024-11-07
  • 如何管理 JavaScript 程式碼結構
    如何管理 JavaScript 程式碼結構
    出色地!維護乾淨且有組織的 JavaScript 程式碼庫對於專案的長期成功至關重要。結構良好的程式碼庫可以增強可讀性,減少技術債務,並促進更輕鬆的調試和擴展。無論您正在開發小型專案還是大型應用程序,遵循建立 JavaScript 程式碼的最佳實踐都可以顯著改善您的開發流程。以下是如何管理 Java...
    程式設計 發佈於2024-11-07
  • 溢出可以配置向左流嗎?
    溢出可以配置向左流嗎?
    溢出可以配置為向左流動嗎? 溢流通常透過強制內容向右流動來處理,導致最左邊的內容被裁切。但是,可以透過套用特定的 CSS 樣式來扭轉此行為。 解決方案要啟用向左溢出,請按照給定的步驟操作:將溢出設定為隱藏:將溢出:隱藏應用到容器以防止內容超出其邊界。 文字右對齊:使用text-align: righ...
    程式設計 發佈於2024-11-07
  • 如何在保留資料類型的同時將 NumPy 陣列與不同資料類型組合?
    如何在保留資料類型的同時將 NumPy 陣列與不同資料類型組合?
    在NumPy 中組合具有多種資料類型的陣列將包含不同資料類型的陣列連接成單一陣列,每列中具有相應的數據類型一個挑戰。不幸的是,使用 np.concatenate() 的常見方法會將整個數組轉換為字串資料類型,從而導致記憶體效率低下。 要克服此限制,一個可行的解決方案是使用記錄數組或結構化數組。 記錄...
    程式設計 發佈於2024-11-07
  • 如何在同一行水平對齊內聯塊?
    如何在同一行水平對齊內聯塊?
    在同一行水平對齊內聯塊問題內聯塊比浮動元素具有優勢,例如基線對齊和自動居中當視口變窄時。然而,在同一行上水平對齊兩個內聯區塊可能會帶來挑戰。 內聯塊對齊的挑戰浮動可能會幹擾基線對齊並導致不必要的環繞.相對和絕對定位會導致間距問題,類似於浮動。 解決方案:使用文字對齊一個有效的解決方案是利用文字對齊:...
    程式設計 發佈於2024-11-07
  • 感到沒有動力
    感到沒有動力
    覺得自己像個菜鳥,放棄了幾次。 我第一次開始考慮編碼是在我還是個孩子的時候,但我選擇成為一名社交蝴蝶,現在我已經26 歲了,嘗試了很多次學習編碼python、JS、React、DB 等但最終,我感到不知所措並放棄了它。 現在,正因為如此,我感覺自己像個失敗的鬆手,我想解決這個問題...
    程式設計 發佈於2024-11-07

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3