本文將探討為何在存取陣列元素時,Array.prototype.at()
比 Array[index]
更為理想。
動機
以往存取陣列元素時,我習慣使用 Array[index]
,例如 Array[1]
。這是我所熟悉的,也是我學習取得陣列元素的方式。
然而,最近一位同事在程式碼審查中提出:「為什麼不使用 Array.prototype.at()
而不是直接使用索引?」
我的程式碼是:
const element = arr[1];
他建議改為:
const element = arr.at(1);
這種方法讓我眼前一亮,因為它看起來非常簡潔直覺。
如何使用 Array.prototype.at()
Array.prototype.at()
接受一個整數作為參數,並傳回數組中的對應元素。
例如,對於陣列:
const arr = ["One", "Two", "Three"];
呼叫:
arr.at(0); // 返回 "One"
這與方括號表示法 array[0]
等效。你可能會好奇,這有什麼差別呢?接下來我們將深入探討使用此方法的優點。
為什麼 Array[index] 不理想?
讓我們來看看一些應該使用 Array.prototype.at()
而不是 Array[index]
的場景。
取得陣列的最後一個元素
假設有一個字串陣列:
const sports = ["basketball", "baseball", "football"];
要取得陣列的最後一個元素 "football",你可以這樣寫:
const lastElement = sports[sports.length - 1];
這是正確的方法;但是,使用 Array.prototype.at()
方法可以寫得更簡潔:
const lastElement = sports.at(-1);
是不是比較易讀?
型態推論
在 TypeScript 中,方括號表示法不會將 undefined
包含在型別推論中。
const arr: string[] = []; const element = arr[0]; console.log(element); // undefined
element
的型別推論為 string
,而不是 string | undefined
。
我們期望 TypeScript 在編寫此程式碼時給出編譯錯誤。
通常,我們希望確保存取的陣列元素存在。
const arr: string[] = []; const element = arr[0]; if (typeof element === 'string') console.log(element);
奇怪的是,我們正在檢查 TypeScript 推斷為 string
的元素類型。
你可能會想到使用型別斷言:
const element: string | undefined = arr[0];
然而,這並非理想的做法,因為我們不應該自己承擔編寫完美程式碼的責任。
為了解決這個問題,我們可以採取兩種方法:
- 編寫型別保護函數
- 使用
noUncheckedIndexedAccess
編譯器選項
兩種方法都能很好地工作,但如果使用 Array.prototype.at()
,則無需兩者兼顧。
const arr: string[] = []; const element = arr.at(0); // string | undefined console.log(element);
如果嘗試將 element
插入到類型為 string
的其他值中,則會得到編譯錯誤:
const element = arr[1];
結論
使用 Array.prototype.at()
可以編寫更簡潔的程式碼,並避免添加額外的函數和配置。
Array.prototype.at()
在 Mozilla 開發者網路上的解釋:連結 (請替換為實際連結)
以上是在 Array[index] 上使用 Array.at()的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

如何在Quartz中提前發送任務通知在使用Quartz定時器進行任務調度時,任務的執行時間是由cron表達式設定的。現�...

在JavaScript中如何獲取原型鏈上函數的參數在JavaScript編程中,理解和操作原型鏈上的函數參數是常見且重要的任�...

在微信小程序web-view中使用Vue.js動態style位移失效的原因分析在使用Vue.js...

在Tampermonkey中如何對多個鏈接進行並發GET請求並依次判斷返回結果?在Tampermonkey腳本中,我們經常需要對多個鏈...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版
中文版,非常好用

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。