摘要:數據結構類型擴展相對之類的強類型語言,有一點很大的區別就是,數據結構只有與,并且都是動態可變的,而有等數據結構。所以,為了能在中也使用這些數據結構,就應運而生。擴充了中的不可變集合,即一旦創建就不能改變的數據類型。
js 數據結構類型擴展:immutable-js
相對 java、.net 之類的強類型語言,js 有一點很大的區別就是,數據結構只有 array 與 object,并且都是動態可變的,而 java 有 List, Set, Map 等數據結構。所以,為了能在 js 中也使用這些數據結構,immutable-js 就應運而生。
1. immutable-jsimmutable-js 擴充了 JavaScript 中的不可變集合,即一旦創建就不能改變的數據類型。這樣可簡化應用開發、無防御復制、啟用更先進的內存方案,以及使用更簡單的邏輯檢查更新。持久化數據提供可修改的 API,這些 API 不在原地更新數據,而是產生新的更新后的數據。
2. 提供的數據類型List: 有序索引集合,類似 JavaScript 中的 Array
Map: 無序鍵值對((key, value) pairs)集合
OrderedMap: 有序的 Map
Set: 無重復值的集合
OrderedSet: 有序的 Set
Stack: 支持元素添加和移除的索引集合
Range(): 返回一個從 start 到 end,步長 step 填充的 Seq.Indexed 集合,start 默認值為 0,step 默認值為 1,end 默認為無窮大。如果 start = end,則返回空集合。
Repeat(): 返回一個用 value 重復 times 次的 Seq.Indexed 集合。如果 times 未定義,則返回無限 value 值的 Seq 集合。
Record: 類似于 JavaScript 的 Object,但是只接收特定字符串為 key,并有默認值
Seq: 允許不通過中間集合讓高階集合函數(如 map, filter)高效鏈式調用的惰性操作集合
Collection: 所有數據結構的基類
更多數據類型參考 immutable-js - docs.
3. 提供的 API 3.1 fromJS: 將一個 js 數據轉換為 immutable-js 類型的數據const { fromJS, isKeyed } = require("immutable@4.0.0-rc.9"); fromJS({ a: {b: [10, 20, 30]}, c: 40}, function (key, value, path) { console.log(key, value, path) return isKeyed(value) ? value.toOrderedMap() : value.toList() }) > "b", [ 10, 20, 30 ], [ "a", "b" ] > "a", {b: [10, 20, 30]}, [ "a" ] > "", {a: {b: [10, 20, 30]}, c: 40}, []
詳情參考 immutable-js - docs - fromJS.
3.2 is: 對兩個對象進行比較const { Map, is } = require("immutable@4.0.0-rc.9") const map1 = Map({ a: 1, b: 1, c: 1 }) const map2 = Map({ a: 1, b: 1, c: 1 }) assert.equal(map1 !== map2, true) assert.equal(Object.is(map1, map2), false) assert.equal(is(map1, map2), true)
詳情參考 immutable-js - docs - is.
3.3 更多更多 API 參考 immutable-js - docs.
4. 后續更多博客,查看 https://github.com/senntyou/blogs
作者:深予之 (@senntyou)
版權聲明:自由轉載-非商用-非衍生-保持署名(創意共享3.0許可證)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97796.html
摘要:例如維護一份在內部,來判斷是否有變化,下面這個例子就是一個構造函數,如果將它的實例傳入對象作為第一個參數,就能夠后面的處理對象中使用其中的方法上面這個構造函數相比源代碼省略了很多判斷的部分。 showImg(https://segmentfault.com/img/bV27Dy?w=1400&h=544); 博客鏈接:下一代狀態管理工具 immer 簡介及源碼解析 JS 里面的變量類...
摘要:一向量字典樹字典樹,一種用空間換取時間的樹形數據結構,主要特點是利用字符串的公共前綴來挺升查詢性能。還有最終的數組表示的真實存儲的鍵值,存儲了,存儲了。這其中還有一種節點進行了沖突的處理。 本文受深入探究Immutable.js的實現機制這篇文章啟發,結合自己對Map源碼的解讀,談談我對immutable-js中map數據結構的理解,若有不正確的地方,歡迎指正。 一、Vector Tr...
摘要:個人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現在已經一年的時間了,由于工作比較忙,更新緩慢,后面還是會繼更新,現將已經寫好的文章整理一個目錄,方便更多的小伙伴去學習。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個人前端文章整理 從最開始萌生寫文章的想法,到著手...
閱讀 2418·2023-04-26 00:46
閱讀 581·2023-04-25 21:36
閱讀 729·2021-11-24 10:19
閱讀 2266·2021-11-23 09:51
閱讀 1015·2021-10-21 09:39
閱讀 830·2021-09-22 10:02
閱讀 1664·2021-09-03 10:29
閱讀 2677·2019-08-30 15:53