JavaScript-Array.from

Array.from() 是 JavaScript 中用于將類數組對象(array-like)或可迭代對象(iterable)轉換為真實數組的一個非常有用的方法。


📌 一、基本語法

Array.from(arrayLike, mapFn?, thisArg?)

參數說明:

參數類型描述
arrayLike對象一個類數組對象或可迭代對象(如字符串、Map、Set、DOM NodeList 等)
mapFn函數(可選)類似于 map() 的回調函數,用于對每個元素進行處理
thisArg任意值(可選)執行 mapFn 時使用的 this

? 二、作用詳解

1. 把類數組對象轉成數組

類數組對象:有 length 屬性,并可以通過索引訪問元素,但沒有數組的方法(如 push, slice 等)

示例:
const arrayLike = {0: 'a',1: 'b',2: 'c',length: 3
};const arr = Array.from(arrayLike);
console.log(arr); // ['a', 'b', 'c']

2. 把字符串轉成字符數組

Array.from('hello'); 
// 輸出: ['h', 'e', 'l', 'l', 'o']

相比 str.split('')Array.from() 更適合處理帶 Unicode 字符的字符串。


3. 把 Set / Map 轉成數組

const set = new Set([1, 2, 3]);
Array.from(set); // [1, 2, 3]const map = new Map([['a', 1], ['b', 2]]);
Array.from(map); // [['a', 1], ['b', 2]]

4. 把 arguments 對象轉成數組(ES5 中常用)

function example() {return Array.from(arguments);
}
example(1, 2, 3); // [1, 2, 3]

5. 結合 DOM NodeList 使用

const divs = document.querySelectorAll('div');
const divArray = Array.from(divs);
divArray.forEach(div => console.log(div));

🔁 三、使用 mapFn 映射處理

你可以在創建數組的同時,對每個元素進行映射處理,相當于:

Array.from(obj, x => fn(x))
示例:
Array.from({ length: 5 }, (_, i) => i * 2);
// 輸出: [0, 2, 4, 6, 8]

這個用法非常適合用來生成數字序列、初始化數組等場景。


🧪 四、實用技巧示例

1. 生成指定長度的數字數組(從0開始)

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

2. 生成隨機數數組

Array.from({ length: 5 }, () => Math.floor(Math.random() * 100));
// 示例輸出: [23, 78, 11, 45, 90]

3. 去重并轉成數組

const str = 'abacdef';
Array.from(new Set(str)); // ['a', 'b', 'c', 'd', 'e', 'f']

🆚 五、與 Array.prototype.slice.call() 的區別

在 ES5 中我們經常這樣把類數組轉成數組:

Array.prototype.slice.call(arrayLike);

但在 ES6 中,推薦使用更簡潔、語義更強的:

Array.from(arrayLike);

📝 總結

特性Array.from()
輸入類型類數組、可迭代對象
是否改變原數組? 不會修改原數組
是否返回新數組? 返回一個新的數組
支持 .map() 式處理? 支持 mapFn 回調
兼容性? 大多數現代瀏覽器都支持(IE 不支持)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83351.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83351.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83351.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

二刷蒼穹外賣 day02

新增員工 DTO 將前端傳遞的參數列表通過對應的實體類接收 當前端提交的數據和實體類中對應的屬性差別較大時,使用DTO來封裝數據 Data public class EmployeeDTO implements Serializable {private Long id;private String username;private String name;private…

通過Heron Handoff 插件我們在figma設計中可以像sketch導出離線標注

一、設計交付的歷史困境與破局契機 在數字產品開發的全流程中,設計標注的高效傳遞始終是連接創意與實現的關鍵紐帶。傳統設計工具如 Sketch 憑借 Bluebeam、Sketch Measure 等插件構建了成熟的離線標注體系,設計師可將標注文件打包交付,開發…

SSE 數據的傳輸無法流式獲取

問題 調試過程中發現SSE數據返回的時間都是一樣的,懷疑是接口問題。 參考 EventSource數據一次性出來,并未流式輸出的原因_sourceevent為什么結果一下全部返回了-CSDN博客 處理 EventStream 不能流式返回的問題:Nginx 配置優化 解決方案 …

markdown文本轉換時序圖

好久沒更新了~這篇是markdown文本轉換時序圖的常用方法 文章目錄 前言一、Mermaid語法示例二、PlantUML語法示例三、在線工具快速轉換總結 前言 使用專業工具如Mermaid或PlantUML可以直接在Markdown中繪制時序圖。這些工具支持簡潔的語法,生成可嵌入文檔的圖表&…

谷粒商城-分布式微服務 -集群部署篇[一]

十九、k8s 集群部署 19.1 k8s 快速入門 19.1.1 簡介 Kubernetes 簡稱 k8s。是用于自動部署,擴展和管理容器化應用程序的開源系統。 中文官網 中文社區 官方文檔 社區文檔 概述 | Kubernetes 傳統部署時代: 早期,各個組織是在物理服務器上…

微信小程序- 用canvas生成排行榜

設計功能不是很復雜,也不想用插件,最終出現現在版本,主要用到微信小程序 wx.canvasToTempFilePath方法 // 直接調用改方法 createQRCode() {const qrCodeCanvasId "qrcodeCanvas";drawQrcode({width: 200,height: 200,canvasId: …

深度剖析:UI 設計怎樣為小程序構建極致輕量體驗

內容摘要 在小程序的世界里,用戶都追求快速、便捷的輕量體驗。但你是否好奇,為啥有些小程序能讓人輕松上手,快速達成目標,而有些卻讓人感覺繁瑣、卡頓?這里的關鍵差異,往往就藏在 UI 設計中。UI 設計到底施…

【網絡安全】Qt免殺樣本分析

初步研判 SHA256:9090807bfc569bc8dd42941841e296745e8eb18b208942b3c826b42b97ea67ff 我們可以看到引擎0檢出,是個免殺樣本,不過通過微步云沙箱的行為分析,已經被判為惡意 行為分析 進程行為 可以看到demo顯示調用了winver獲…

window 顯示驅動開發-如何查詢視頻處理功能(六)

D3DDDICAPS_FILTERPROPERTYRANGE請求類型 UMD 返回指向 DXVADDI_VALUERANGE 結構的指針,該結構包含傳遞D3DDDICAPS_FILTERPROPERTYRANGE請求類型時特定視頻流上特定篩選器設置允許的值范圍。 Direct3D 運行時在D3DDDIARG_GETCAPS的 pInfo 成員指向的變量中為特定視…

Oracle線上故障問題解決

----重啟電腦找不到sid Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor Could not open connection sqlplus "/as sysdba" SQL> shutdown immediate 數據庫…

語音信號處理三十——高效多相抽取器(Polyphase+Noble)

文章目錄 前言一、Polyphase 多項分解1.定義2.拆分公式3.推導過程1)按模 M M M拆分求和項2)提取因子 4.總結 二、Noble恒等式1. 定義2.Noble恒等式表達方式1)抽取系統的 Noble 恒等式2)插值系統的 Noble 恒等式 2.Nodble恒等式推導…

廣告推薦系統中模型訓練中模型的結構信息、Dense數據、Sparse數據

下面結合廣告推薦系統常見的深度學習模型(比如 Wide & Deep、DeepFM、Two-Tower 等),介紹一下“模型的結構信息”、Dense 數據和 Sparse 數據在訓練過程中的角色及處理方式。 模型結構信息 輸入層(Input Layer) ? Sparse 輸入:各類離散高維特征(用戶 ID、廣告 ID、…

安全生產管理是什么?安全生產管理主要管什么?

安全生產管理是什么?安全生產管理主要管什么? 不管是制造業、建筑業,還是倉儲、物流、化工等等,一聊到“安全事故”,大家腦子里最先冒出來的兩個詞,肯定就是: 人的不安全行為物的不安全狀態 …

SecureRandom.getInstanceStrong() 與虛擬機的愛恨情仇

問題描述 使用Ruoyi-cloud 二開,將服務部署到虛擬機上后,準備登錄,發現驗證碼一致加載不出來,接口請求超時! 解決步驟 telnet 虛擬機ipport 發現可以通.curl 接口,發現一致不返回,超時了./code 接口超時&am…

DEM 地形分析與水文建模:基于 ArcGIS 的流域特征提取

技術點目錄 一、 GIS理論及ArcGIS認識二、ArcGIS數據管理與轉換三、ArcGIS地圖制作與發布四、ArcGIS數據制備與編輯五、ArcGIS矢量空間分析及應用六、ArcGIS柵格空間分析及應用七、ArcGIS空間插值及應用八、DEM數據與GIS三維分析九、ArcGIS高級建模及應用十、綜合講解了解更多 …

芯伯樂XBLW GT712選型及應用設計指南

前言 在電子工程領域,精準的電流測量對于眾多電路設計與系統監控至關重要。芯伯樂推出的XBLW GT712電流傳感器以其獨特的優勢,成為工程師在諸多應用中的首選工具。本文將深入剖析XBLW GT712的工作原理、性能特點以及應用要點,為工程師提供詳…

MySQL查看連接情況

說明:本文介紹如何查看MySQL會話連接情況,方便排查MySQL占用CPU過高或其他問題。 連接數據庫 首先,使用命令行連接到MySQL數據庫 mysql -u[用戶名] -p[密碼] -h[主機IP] -P[端口號]如果MySQL就在本機上,那么如下即可 mysql -u…

圖文教程——Deepseek最強平替工具免費申請教程——國內edu郵箱可用

親測有效!只需 4 步即可免費體驗最新最強的 AI 助手! 最強AI助手 This account isn’t eligible for Google AI Pro plan Google AI Pro plan isn’t available in some countries or for people under a certain age. 問題終極解決方案: ht…

java轉PHP開發需要幾步?

PHP基礎入門指南(面向Java開發者) 作為Java開發者,你已經掌握了面向對象編程、變量類型和控制結構等核心概念,這將大大加速你學習PHP的過程。下面我將從語法差異和PHP特性兩個方面,幫助你快速上手PHP開發。 語法差異…

一種使用 PowerToys 的鍵盤管理器工具重新映射按鍵實現在 Windows 上快捷輸入字符的方式

文章目錄 一、問題背景二、安裝 PowerToys三、配置快捷鍵 一、問題背景 在之前的一篇文章中介紹了使用 Java 程序實現快捷鍵輸入字符的方式(https://blog.csdn.net/TeleostNaCl/article/details/148158298),其原理是利用 后臺常駐的 Java 應…