」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 在 JavaScript 中建立陣列:綜合指南

在 JavaScript 中建立陣列:綜合指南

發佈於2024-07-30
瀏覽:329

Creating Arrays in JavaScript: A Comprehensive Guide

在 JavaScript 中建立陣列是一項基本任務,但即使是經驗豐富的開發人員也可能會忽略一些細微差別和陷阱。讓我們深入了解基礎知識,並探索數組創建和操作的一些有趣的方面,您可能會發現它們具有啟發性。

基本數組創建

建立陣列最簡單的方法是使用陣列文字:

let arr = [];

然後您可以使用循環填充此數組:

for (let i = 0; i 



這將建立一個包含元素 [0, 1, 2, 3, 4] 的陣列。但是,如果您建立空數組而不填滿它,您將獲得一個沒有項目且沒有空槽的陣列。

使用數組構造函數

創建數組的另一種方法是使用數組建構子:

let arr = Array(5);

當傳遞單一數字參數時,它會建立一個具有指定長度但沒有實際元素的稀疏數組:

console.log(arr.length); // 5
console.log(arr); // [empty × 5]

稀疏數組

稀疏數組具有“空槽”,這可能會在使用 map、filter 或 forEach 等方法時導致意外行為。這些方法跳過空槽:

let arr = Array(5);
arr = arr.map((x, i) => i); // Still [empty × 5]

要填入這樣的數組,需要手動設定值:

arr[0] = 2;
arr[4] = 3;
console.log(arr); // [2, empty × 3, 3]

處理稀疏數組

要有效處理稀疏數組,可以使用 fill 等方法初始化值:

let arr = Array(5).fill(1);
console.log(arr); // [1, 1, 1, 1, 1]

但是填充物件或陣列時要小心:

let arr = Array(5).fill({});
arr[0].name = 'John';
console.log(arr); // [{name: 'John'}, {name: 'John'}, {name: 'John'}, {name: 'John'}, {name: 'John'}]

每個元素引用同一個物件。為了避免這種情況,請使用 map:

let arr = Array(5).fill(0).map(() => ({}));
arr[0].name = 'John';
console.log(arr); // [{name: 'John'}, {}, {}, {}, {}]

Array.from 方法

Array.from 提供了一種從類似陣列或可迭代物件建立陣列的通用方法:

let arr = Array.from({ length: 5 }, (_, i) => i);
console.log(arr); // [0, 1, 2, 3, 4]

在建立二維數組時此方法也可以提供幫助:

let arr2D = Array.from({ length: 5 }, () => Array(5).fill(0));
arr2D[0][0] = 1;
console.log(arr2D); // [[1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

迭代數組

JavaScript 提供了多種迭代數組的方法,每種方法對稀疏數組的處理方式不同:

  • for 迴圈:處理每個索引,將空槽視為未定義。
  • for...in:迭代數組的索引,跳過空槽。
  • for...of:迭代值,將空槽視為未定義。

結論

了解 JavaScript 中陣列建立和操作的複雜性可以幫助您避免常見陷阱並編寫更有效率的程式碼。無論您使用陣列文字、陣列建構函數或 Array.from 和 fill 等方法,了解這些工具的工作原理都將使您能夠在專案中有效地處理陣列。

如果您發現本指南有幫助,請告訴我。我總是渴望創造更多深入研究 JavaScript 細節的內容。感謝您的閱讀,祝您編碼愉快!

版本聲明 本文轉載於:https://dev.to/sharoztanveer/creating-arrays-in-javascript-a-comprehensive-guide-8do?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何使用Python的記錄模塊實現自定義處理?
    如何使用Python的記錄模塊實現自定義處理?
    使用Python的Loggging Module 確保正確處理和登錄對於疑慮和維護的穩定性至關重要Python應用程序。儘管手動捕獲和記錄異常是一種可行的方法,但它可能乏味且容易出錯。 解決此問題,Python允許您覆蓋默認的異常處理機制,並將其重定向為登錄模塊。這提供了一種方便而係統的方法來捕獲...
    程式設計 發佈於2025-02-19
  • 為什麼使用Firefox後退按鈕時JavaScript執行停止?
    為什麼使用Firefox後退按鈕時JavaScript執行停止?
    導航歷史記錄問題:JavaScript使用Firefox Back Back 此行為是由瀏覽器緩存JavaScript資源引起的。要解決此問題並確保在後續頁面訪問中執行腳本,Firefox用戶應設置一個空功能以在window.onunload事件上調用。 pre> window.onlo...
    程式設計 發佈於2025-02-19
  • 我可以將加密從McRypt遷移到OpenSSL,並使用OpenSSL遷移MCRYPT加密數據?
    我可以將加密從McRypt遷移到OpenSSL,並使用OpenSSL遷移MCRYPT加密數據?
    將我的加密庫從mcrypt升級到openssl 問題:是否可以將我的加密庫從McRypt升級到OpenSSL?如果是這樣?使用openssl? 答案:可以使用mcrypt數據加密數據,可以使用openssl。關於如何使用openssl對McRypt進行加密的數據: openssl_decryp...
    程式設計 發佈於2025-02-19
  • 對象擬合:IE和Edge中的封面失敗,如何修復?
    對象擬合:IE和Edge中的封面失敗,如何修復?
    解決此問題,我們採用了一個巧妙的CSS解決方案來解決問題:左:50% ; 高度:auto; 寬度:100% ; //對於水平塊 ,使用絕對定位將圖像定位在中心,以object-fit:object-fit:cover in IE和edge消除了問題。現在,圖像將按比例擴展,保持所需的效果而不會失...
    程式設計 發佈於2025-02-19
  • 如何在JavaScript對像中動態設置鍵?
    如何在JavaScript對像中動態設置鍵?
    如何為JavaScript對像變量創建動態鍵,嘗試為JavaScript對象創建動態鍵,使用此Syntax jsObj['key' i] = 'example' 1;將不起作用。正確的方法採用方括號:他們維持一個長度屬性,該屬性反映了數字屬性(索引)和一個數字屬性的數量。標準對像沒有模仿這...
    程式設計 發佈於2025-02-19
  • 為什麼箭頭函數在IE11中引起語法錯誤?如何修復它們?
    為什麼箭頭函數在IE11中引起語法錯誤?如何修復它們?
    為什麼arrow functions在IE 11 中引起語法錯誤。 IE 11不支持箭頭函數,導致語法錯誤。 這使用傳統函數語法來定義與原始箭頭函數相同的邏輯。 IE 11現在將正確識別並執行代碼。
    程式設計 發佈於2025-02-19
  • 如何使用PHP將斑點(圖像)正確插入MySQL?
    如何使用PHP將斑點(圖像)正確插入MySQL?
    在嘗試將image存儲在mysql數據庫中時,您可能會遇到一個可能會遇到問題。本指南將提供成功存儲您的圖像數據的解決方案。 essue values( '$ this-> image_id','file_get_contents($ tmp_image)...
    程式設計 發佈於2025-02-19
  • 如何檢查對像是否具有Python中的特定屬性?
    如何檢查對像是否具有Python中的特定屬性?
    方法來確定對象屬性存在尋求一種方法來驗證對像中特定屬性的存在。考慮以下示例,其中嘗試訪問不確定屬性會引起錯誤: >>> a = someClass() >>> A.property Trackback(最近的最新電話): 文件“ ”,第1行, AttributeError:SomeClass實...
    程式設計 發佈於2025-02-19
  • PHP陣列鍵值異常:了解07和08的好奇情況
    PHP陣列鍵值異常:了解07和08的好奇情況
    PHP數組鍵值問題,使用07&08 在給定數月的數組中,鍵值07和08呈現令人困惑的行為時,就會出現一個不尋常的問題。運行print_r($月份)返回意外結果:鍵“ 07”丟失,而鍵“ 08”分配給了9月的值。 此問題源於PHP對領先零的解釋。當一個數字帶有0(例如07或08)的前綴時,PHP...
    程式設計 發佈於2025-02-19
  • 為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    [2明確擔心Microsoft Visual C(MSVC)在正確實現兩相模板實例化方面努力努力。該機制的哪些具體方面無法按預期運行? 背景:說明:的初始Syntax檢查在範圍中受到限制。它未能檢查是否存在聲明名稱的存在,導致名稱缺乏正確的聲明時會導致編譯問題。 為了說明這一點,請考慮以下示例:一個...
    程式設計 發佈於2025-02-19
  • 如何以不同的頻率控制Android設備振動?
    如何以不同的頻率控制Android設備振動?
    控制使用頻率變化的Android設備振動是否想為您的Android應用程序添加觸覺元素?了解如何觸發設備的振動器至關重要。您可以做到這一點:生成基本振動以生成簡單的振動,使用振動器對象:這將導致設備在指定的持續時間內振動。 許可要求通過上述技術,您可以創建在您的Android應用程序中自定義振動,以...
    程式設計 發佈於2025-02-19
  • Java是否允許多種返回類型:仔細研究通用方法?
    Java是否允許多種返回類型:仔細研究通用方法?
    在java中的多個返回類型:一個誤解介紹,其中foo是自定義類。該方法聲明似乎擁有兩種返回類型:列表和E。但是,情況確實如此嗎? 通用方法:拆開神秘 [方法僅具有單一的返回類型。相反,它採用機制,如鑽石符號“ ”。 分解方法簽名: :本節定義了一個通用類型參數,E。它表示該方法接受了擴展foo類...
    程式設計 發佈於2025-02-19
  • 為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    mySQL錯誤#1089:錯誤的前綴鍵錯誤descript 理解prefix keys primary鍵(movie_id(3))primary鍵(Movie_id) primary鍵(Movie_id) primary鍵(Movie_id) > `這將在整個Movie_ID列上建立標...
    程式設計 發佈於2025-02-19
  • 如何在Java字符串中有效替換多個子字符串?
    如何在Java字符串中有效替換多個子字符串?
    Exploiting Regular ExpressionsA more efficient solution involves leveraging regular expressions.正則表達式允許您定義復雜的搜索模式並在單個操作中執行文本轉換。 示例使用接下來,您可以使用匹配器查找令牌的...
    程式設計 發佈於2025-02-19
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    element.addeventlistener(event,function(){/要解決此問題,請考慮將事件處理程序存儲在中心位置,例如頁面的主要對象,請考慮將事件處理程序存儲在中心位置,否則無法清理匿名事件處理程序。 。這允許在需要時輕鬆迭代和清潔處理程序。
    程式設計 發佈於2025-02-19

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

Copyright© 2022 湘ICP备2022001581号-3