摘要:這篇文章是一些操作的整理目前只有基本的操作文檔請(qǐng)查看使用過程中遇到的寫法我會(huì)不會(huì)增加在后邊當(dāng)中不可變數(shù)據(jù)有點(diǎn)不適應(yīng)需要借鑒一些中的內(nèi)容更新六月份到十月份我們完成了不可變數(shù)據(jù)的重構(gòu)配合簡聊的巨大的單一可以整理出來一些常用的方法示例代碼用的是
這篇文章是 immutable-js 一些操作的整理, 目前只有基本的操作:
文檔請(qǐng)查看: http://facebook.github.io/imm...
使用過程中遇到的寫法我會(huì)不會(huì)增加在后邊.
JavaScript 當(dāng)中不可變數(shù)據(jù)有點(diǎn)不適應(yīng), 需要借鑒一些 Haskell 中的內(nèi)容:
http://learnyouahaskell.com/c...
https://leanpub.com/purescrip...
更新:
六月份到十月份, 我們完成了不可變數(shù)據(jù)的重構(gòu)
配合簡聊的巨大的單一 store, 可以整理出來一些常用的方法
示例代碼用的是 CoffeeScript
從 JavaScript 數(shù)據(jù)生成不可變對(duì)象(支持?jǐn)?shù)據(jù)嵌套):
Immutable.fromJS([1,2]) Immutable.fromJS({a: 1})
從 JavaScript 數(shù)據(jù)生成不可變對(duì)象(不支持?jǐn)?shù)據(jù)嵌套):
Immutable.List([1,2]}) Immutable.Map({a: 1})
從不可變數(shù)據(jù)生成 JavaScript 對(duì)象
immutableData.toJS()
判斷兩個(gè)數(shù)據(jù)結(jié)構(gòu)是否相等:
Immutable.is immutableA, immutableB
判斷兩個(gè)數(shù)據(jù)引用是否一致(shallow equal):
immutableA is immutableBList
Immutable.List() # 空 List Immutable.List([1,2]) Immutable.fromJS([1,2])
查看 List 的大小:
immutableA.size immutableA.count()
判斷是否是 List:
Immutable.List.isList(x)
React 組件 propTypes 判斷是否是 List:
React.PropTypes.instanceOf(Immutable.List).isRequired
獲取 List 索引的元素(負(fù)數(shù)也是能運(yùn)行的):
immutableData.get(0) immutableData.get(-1) #反向索引
通過 getIn 訪問嵌套數(shù)組當(dāng)中的數(shù)據(jù):
immutableData.getIn [1, 2]
List 更新操作, 也就是創(chuàng)建一個(gè)新的 List 數(shù)據(jù):
immutableA = Immutable.fromJS([0, 0, [1, 2]]) immutableB = immutableA.set 1, 1 immutableC = immutableB.update 1, (x) -> x + 1 immutableC = immutableB.updateIn [2, 1], (x) -> x + 1
排序, 有 sort 和 sortBy:
immutableData.sort (a, b) -> if a < b then return -1 if a > b then return 1 return 0 immutableData.sortBy (x) -> x
遍歷(返回 false 會(huì)終止遍歷):
immutableData.forEach (a, b) -> console.log a, b return true
查找, find 返回第一個(gè)匹配值, filter 返回 List:
immutableData.find (x) -> x > 1 immutableData.filter (x) -> x > 1 immutableData.filterNot (x) -> x <= 1Map
Immutable.Map() # 空 Map Immutable.Map({a: 1}) Immutable.fromJS({a: 1})
判斷 Map 的寫法和 List 判斷類似:
Immutable.Map.isMap(x)
獲得 Map 中的數(shù)據(jù):
immutableData.get("a")
通過 getIn 訪問嵌套的 Map 中的樹上:
immutableData.getIn ["a", "b"]
更新對(duì)象和嵌套的對(duì)象:
immutableB = immutableA.set "a", 1 immutableB = immutableA.setIn ["a", "b"], 1 immutableB = immutableA.update "a", (x) -> x + 1 immutableB = immutableA.updateIn ["a", "b"], (x) -> x + 1
合并對(duì)象:
immutableB = immutableA.merge(immutableC)
判斷屬性是否存在(undefined 也是存在的):
immutableData = Immutable.fromJS({key: null}) immutableData.has("key")
Map 的 filter 和 List 神似, 返回值 Map:
data = Immutable.fromJS({a: 1, b: 2}) data.filter (value, key) -> value is 1 # => Map {a: 1}
同樣 Map 也可以做一些 reduce 操作, 以及其他的方法, 類似 List:
immutableA.reduce (acc, value, key) -> acc.set key, value , immutable.Map()
獲取 key 和 value 的數(shù)組形式:
immutableData.keySeq() immutableData.valueSeq()更多
從 JavaScript JSON Object 遷移主要用這兩個(gè)數(shù)據(jù)結(jié)構(gòu)
然而文檔中提供的數(shù)據(jù)結(jié)構(gòu)非常多, 記得自己看文檔, 我們還有大量未探索的
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/85746.html
摘要:張偉輸出結(jié)果這樣就實(shí)現(xiàn)了在源數(shù)據(jù)的基礎(chǔ)上更改了值并且輸出一個(gè)與之地址完全不同數(shù)組。 本來想將有關(guān)于immutability-helper的博文放在一起學(xué)React系列博文中,但是考慮到該插件不僅僅在React中實(shí)用到,所以就單獨(dú)拿出來分兩期寫。 發(fā)現(xiàn)問題 immutability意為不變,不變性,永恒性。至于該插件能做什么,我想它的作者對(duì)它的標(biāo)注已經(jīng)很明確了mutate a copy ...
摘要:一向量字典樹字典樹,一種用空間換取時(shí)間的樹形數(shù)據(jù)結(jié)構(gòu),主要特點(diǎn)是利用字符串的公共前綴來挺升查詢性能。還有最終的數(shù)組表示的真實(shí)存儲(chǔ)的鍵值,存儲(chǔ)了,存儲(chǔ)了。這其中還有一種節(jié)點(diǎn)進(jìn)行了沖突的處理。 本文受深入探究Immutable.js的實(shí)現(xiàn)機(jī)制這篇文章啟發(fā),結(jié)合自己對(duì)Map源碼的解讀,談?wù)勎覍?duì)immutable-js中map數(shù)據(jù)結(jié)構(gòu)的理解,若有不正確的地方,歡迎指正。 一、Vector Tr...
摘要:數(shù)據(jù)結(jié)構(gòu)類型擴(kuò)展相對(duì)之類的強(qiáng)類型語言,有一點(diǎn)很大的區(qū)別就是,數(shù)據(jù)結(jié)構(gòu)只有與,并且都是動(dòng)態(tài)可變的,而有等數(shù)據(jù)結(jié)構(gòu)。所以,為了能在中也使用這些數(shù)據(jù)結(jié)構(gòu),就應(yīng)運(yùn)而生。擴(kuò)充了中的不可變集合,即一旦創(chuàng)建就不能改變的數(shù)據(jù)類型。 js 數(shù)據(jù)結(jié)構(gòu)類型擴(kuò)展:immutable-js 相對(duì) java、.net 之類的強(qiáng)類型語言,js 有一點(diǎn)很大的區(qū)別就是,數(shù)據(jù)結(jié)構(gòu)只有 array 與 object,并且都...
摘要:例如維護(hù)一份在內(nèi)部,來判斷是否有變化,下面這個(gè)例子就是一個(gè)構(gòu)造函數(shù),如果將它的實(shí)例傳入對(duì)象作為第一個(gè)參數(shù),就能夠后面的處理對(duì)象中使用其中的方法上面這個(gè)構(gòu)造函數(shù)相比源代碼省略了很多判斷的部分。 showImg(https://segmentfault.com/img/bV27Dy?w=1400&h=544); 博客鏈接:下一代狀態(tài)管理工具 immer 簡介及源碼解析 JS 里面的變量類...
摘要:當(dāng)大家考慮在項(xiàng)目中使用的時(shí)候,第一個(gè)問題往往是他們的應(yīng)用的速度和響應(yīng)是否能和非版一樣,每當(dāng)狀態(tài)改變的時(shí)候就重新渲染組件的整個(gè)子樹,讓大家懷疑這會(huì)不會(huì)對(duì)性能造成負(fù)面影響。 當(dāng)大家考慮在項(xiàng)目中使用 React 的時(shí)候,第一個(gè)問題往往是他們的應(yīng)用的速度和響應(yīng)是否能和非 React 版一樣,每當(dāng)狀態(tài)改變的時(shí)候就重新渲染組件的整個(gè)子樹,讓大家懷疑這會(huì)不會(huì)對(duì)性能造成負(fù)面影響。React 用了一些黑...
閱讀 637·2021-11-22 15:32
閱讀 2725·2021-11-19 09:40
閱讀 2320·2021-11-17 09:33
閱讀 1277·2021-11-15 11:36
閱讀 1874·2021-10-11 10:59
閱讀 1485·2019-08-29 16:41
閱讀 1788·2019-08-29 13:45
閱讀 2157·2019-08-26 13:36