map是引用類型;map(集合)是es6新增的一種引用資料類型,表示資料的映射關係。 map集合資料類型中資料是以“鍵/值”的方式儲存的,可以使用物件的屬性作為鍵,使用屬性來引用值;map可以使用new來創建,範例“const myMap = new Map();” 。
本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
map是引用類型。
es6 map
在ES6之前,在JavaScript中實作'鍵'=>'值',也就是我們常說的鍵值對,是用Object來完成的。但這種實作方式在特殊場景下的有問題的,ES6又出了一個為Map的新集合類型,為這門語言帶來正真的鍵值對儲存機制。
map(集合)是es6新增的一種引用資料類型,表示資料的映射關係;map集合資料類型中資料是以「鍵/值」的方式儲存的,可以使用物件的屬性作為鍵,使用屬性來引用值。
#使用new
關鍵字來實例一個map
let m = new Map(); console.log(m); // Map(0) {}
創建時初始化:
傳入一個二維數組參數(可迭代對象,內部以數組的方式傳入鍵值)
每個子數組,第一個元素是map對應的key
, 第二個元素是map對應的value
let m = new Map([[{}, 222], [{}, '123']]); console.log(m); // Map(2) { {} => 222, {} => '123' }
1-2-1 新增映射元素
#透過set()方法加,傳入兩個參數,第一個傳入映射的鍵,第二個傳入映射的值。傳回的是該映射集合(意味著可以鍊式添加)
let m = new Map(); m.set('prop', '值'); console.log(m); // Map(1) { 'prop' => '值' }
鍊式添加鍵值
let m = new Map(); m.set('prop', '值').set('prop2', false).set('num', {id: 13}); console.log(m); // Map(3) { 'prop' => '值', 'prop2' => false, 'num' => { id: 13 } }
1-2-2 映射集合長度
使用size
屬性可以取得到目前集合元素數量
let m = new Map(); m.set('prop', '值').set('prop2', false).set('num', {id: 13}); console.log(m.size);
1-2-3 取得元素
透過get()方法取得到元素,傳入取得目標的key
let m = new Map(); m.set('prop', '值').set('prop2', false).set('num', {id: 13}); console.log(m.get('prop2')); // false
1-2-4 刪除元素
透過delete()方法刪除映射集合中的某個元素,傳回刪除成功或失敗的布林值
let m = new Map(); m.set('prop', '值').set('prop2', false).set('num', {id: 13}); m.delete('prop2'); // true console.log(m.get('prop2'), m.size); // undefined 2
1-2-5 偵測元素是否存在
使用has()方法偵測目標元素是否存在,傳回偵測結果的布林值
let m = new Map(); m.set('prop', '值').set('prop2', false).set('num', {id: 13}); m.delete('prop2'); // true console.log(m.has('prop2'), m.has('num')); // false true
1-2-6 清除元素方法
使用clear()方法可以清除所有的元素, 傳回清除成功的布林值
let m = new Map(); m.set('prop', '值').set('prop2', false).set('num', {id: 13}); m.clear(); // true console.log(m); // Map(0) {}
map可以根據插入順序迭代元素
映射實例會提供(iterator).能夠以插入的順序產生[key, value]形式的數組,可以透過entries ()方法(或提供的Symbol.iterator)迭代器介面遍歷。
let m = new Map(); m.set('prop', '值').set('prop2', false).set('num', {id: 13}); console.log(m.entries === m[Symbol.iterator]);// true for(let k1 of m.entries()){ console.log(k1); // [ 'prop', '值' ] // [ 'prop2', false ] // [ 'num', { id: 13 } ] // 遍历的属性即对应映射元素的键值对数组 } for(let k2 of m.keys()){ console.log(k2); // prop // prop2 // num // 遍历的属性对应映射元素的键 } for(let k3 of m.values()){ console.log(k3); // 值 // false // { id: 13 } // 遍历的属性对应映射元素的值 } for(let k4 of m[Symbol.iterator]()){ console.log(k4); // [ 'prop', '值' ] // [ 'prop2', false ] // [ 'num', { id: 13 } ] // 遍历的属性即对应映射元素的键值对数组 }
- #記憶體佔用
瀏覽器的差異會導致兩種儲存方式佔用的記憶體佔用所不同,不過在給定記憶體大小的情況下,map比Object多儲存大約50%的鍵值對
- 插入效能
插入速度上面map 和Object效能大致相同, 但如果程式碼涉及大量的插入,建議使用map
- 找出速度
#差異較小,只包含少量鍵值對的情況下Object更好
- 刪除性能
#Object 的delete()性能較差,而map的刪除delete()效能好,如果資料涉及大量的刪除操作,建議使用map
【相關推薦:javascript影片教學、程式設計影片】
以上是es6 map是引用型別嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

React受歡迎的原因包括其性能優化、組件復用和豐富的生態系統。 1.性能優化通過虛擬DOM和diffing機制實現高效更新。 2.組件復用通過可複用組件減少重複代碼。 3.豐富的生態系統和單向數據流增強了開發體驗。

React是構建動態和交互式用戶界面的首選工具。 1)組件化與JSX使UI拆分和復用變得簡單。 2)狀態管理通過useState鉤子實現,觸發UI更新。 3)事件處理機制響應用戶交互,提升用戶體驗。

React是前端框架,用於構建用戶界面;後端框架用於構建服務器端應用程序。 React提供組件化和高效的UI更新,後端框架提供完整的後端服務解決方案。選擇技術棧時需考慮項目需求、團隊技能和可擴展性。

HTML和React的關係是前端開發的核心,它們共同構建現代Web應用的用戶界面。 1)HTML定義內容結構和語義,React通過組件化構建動態界面。 2)React組件使用JSX語法嵌入HTML,實現智能渲染。 3)組件生命週期管理HTML渲染,根據狀態和屬性動態更新。 4)使用組件優化HTML結構,提高可維護性。 5)性能優化包括避免不必要渲染,使用key屬性,保持組件單一職責。

React是構建交互式前端體驗的首選工具。 1)React通過組件化和虛擬DOM簡化UI開發。 2)組件分為函數組件和類組件,函數組件更簡潔,類組件提供更多生命週期方法。 3)React的工作原理依賴虛擬DOM和調和算法,提高性能。 4)狀態管理使用useState或this.state,生命週期方法如componentDidMount用於特定邏輯。 5)基本用法包括創建組件和管理狀態,高級用法涉及自定義鉤子和性能優化。 6)常見錯誤包括狀態更新不當和性能問題,調試技巧包括使用ReactDevTools和優

React是一個用於構建用戶界面的JavaScript庫,其核心是組件化和狀態管理。 1)通過組件化和狀態管理簡化UI開發。 2)工作原理包括調和和渲染,優化可通過React.memo和useMemo實現。 3)基本用法是創建並渲染組件,高級用法包括使用Hooks和ContextAPI。 4)常見錯誤如狀態更新不當,可使用ReactDevTools調試。 5)性能優化包括使用React.memo、虛擬化列表和CodeSplitting,保持代碼可讀性和可維護性是最佳實踐。

React通過JSX與HTML結合,提升用戶體驗。 1)JSX嵌入HTML,使開發更直觀。 2)虛擬DOM機制優化性能,減少DOM操作。 3)組件化管理UI,提高可維護性。 4)狀態管理和事件處理增強交互性。

React組件可以通過函數或類定義,封裝UI邏輯並通過props接受輸入數據。 1)定義組件:使用函數或類,返回React元素。 2)渲染組件:React調用render方法或執行函數組件。 3)復用組件:通過props傳遞數據,構建複雜UI。組件的生命週期方法允許在不同階段執行邏輯,提升開發效率和代碼可維護性。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver Mac版
視覺化網頁開發工具

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

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。