成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

筆記, immutable-js 基礎(chǔ)操作

alexnevsky / 1208人閱讀

摘要:這篇文章是一些操作的整理目前只有基本的操作文檔請查看使用過程中遇到的寫法我會不會增加在后邊當中不可變數(shù)據(jù)有點不適應(yīng)需要借鑒一些中的內(nèi)容更新六月份到十月份我們完成了不可變數(shù)據(jù)的重構(gòu)配合簡聊的巨大的單一可以整理出來一些常用的方法示例代碼用的是

這篇文章是 immutable-js 一些操作的整理, 目前只有基本的操作:
文檔請查看: http://facebook.github.io/imm...
使用過程中遇到的寫法我會不會增加在后邊.

JavaScript 當中不可變數(shù)據(jù)有點不適應(yīng), 需要借鑒一些 Haskell 中的內(nèi)容:
http://learnyouahaskell.com/c...
https://leanpub.com/purescrip...

更新:

六月份到十月份, 我們完成了不可變數(shù)據(jù)的重構(gòu)
配合簡聊的巨大的單一 store, 可以整理出來一些常用的方法
示例代碼用的是 CoffeeScript

從 JavaScript 數(shù)據(jù)生成不可變對象(支持數(shù)據(jù)嵌套):

Immutable.fromJS([1,2])
Immutable.fromJS({a: 1})

從 JavaScript 數(shù)據(jù)生成不可變對象(不支持數(shù)據(jù)嵌套):

Immutable.List([1,2]})
Immutable.Map({a: 1})

從不可變數(shù)據(jù)生成 JavaScript 對象

immutableData.toJS()

判斷兩個數(shù)據(jù)結(jié)構(gòu)是否相等:

Immutable.is immutableA, immutableB

判斷兩個數(shù)據(jù)引用是否一致(shallow equal):

immutableA is immutableB
List
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 索引的元素(負數(shù)也是能運行的):

immutableData.get(0)
immutableData.get(-1) #反向索引

通過 getIn 訪問嵌套數(shù)組當中的數(shù)據(jù):

immutableData.getIn [1, 2]

List 更新操作, 也就是創(chuàng)建一個新的 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

排序, 有 sortsortBy:

immutableData.sort (a, b) ->
 if a < b then return -1
 if a > b then return 1
 return 0
immutableData.sortBy (x) ->
  x

遍歷(返回 false 會終止遍歷):

immutableData.forEach (a, b) ->
  console.log a, b
  return true

查找, find 返回第一個匹配值, filter 返回 List:

immutableData.find (x) ->
  x > 1
immutableData.filter (x) ->
  x > 1
immutableData.filterNot (x) ->
  x <= 1
Map
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"]

更新對象和嵌套的對象:

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

合并對象:

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 遷移主要用這兩個數(shù)據(jù)結(jié)構(gòu)
然而文檔中提供的數(shù)據(jù)結(jié)構(gòu)非常多, 記得自己看文檔, 我們還有大量未探索的

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/85746.html

相關(guān)文章

  • immutability-helper 學習筆記 -1

    摘要:張偉輸出結(jié)果這樣就實現(xiàn)了在源數(shù)據(jù)的基礎(chǔ)上更改了值并且輸出一個與之地址完全不同數(shù)組。 本來想將有關(guān)于immutability-helper的博文放在一起學React系列博文中,但是考慮到該插件不僅僅在React中實用到,所以就單獨拿出來分兩期寫。 發(fā)現(xiàn)問題 immutability意為不變,不變性,永恒性。至于該插件能做什么,我想它的作者對它的標注已經(jīng)很明確了mutate a copy ...

    xbynet 評論0 收藏0
  • 讀懂immutable-js中的Map數(shù)據(jù)結(jié)構(gòu)

    摘要:一向量字典樹字典樹,一種用空間換取時間的樹形數(shù)據(jù)結(jié)構(gòu),主要特點是利用字符串的公共前綴來挺升查詢性能。還有最終的數(shù)組表示的真實存儲的鍵值,存儲了,存儲了。這其中還有一種節(jié)點進行了沖突的處理。 本文受深入探究Immutable.js的實現(xiàn)機制這篇文章啟發(fā),結(jié)合自己對Map源碼的解讀,談?wù)勎覍mmutable-js中map數(shù)據(jù)結(jié)構(gòu)的理解,若有不正確的地方,歡迎指正。 一、Vector Tr...

    jone5679 評論0 收藏0
  • 前端進階(11) - js 數(shù)據(jù)結(jié)構(gòu)類型擴展:immutable-js

    摘要:數(shù)據(jù)結(jié)構(gòu)類型擴展相對之類的強類型語言,有一點很大的區(qū)別就是,數(shù)據(jù)結(jié)構(gòu)只有與,并且都是動態(tài)可變的,而有等數(shù)據(jù)結(jié)構(gòu)。所以,為了能在中也使用這些數(shù)據(jù)結(jié)構(gòu),就應(yīng)運而生。擴充了中的不可變集合,即一旦創(chuàng)建就不能改變的數(shù)據(jù)類型。 js 數(shù)據(jù)結(jié)構(gòu)類型擴展:immutable-js 相對 java、.net 之類的強類型語言,js 有一點很大的區(qū)別就是,數(shù)據(jù)結(jié)構(gòu)只有 array 與 object,并且都...

    BLUE 評論0 收藏0
  • immer.js 簡介及源碼解析

    摘要:例如維護一份在內(nèi)部,來判斷是否有變化,下面這個例子就是一個構(gòu)造函數(shù),如果將它的實例傳入對象作為第一個參數(shù),就能夠后面的處理對象中使用其中的方法上面這個構(gòu)造函數(shù)相比源代碼省略了很多判斷的部分。 showImg(https://segmentfault.com/img/bV27Dy?w=1400&h=544); 博客鏈接:下一代狀態(tài)管理工具 immer 簡介及源碼解析 JS 里面的變量類...

    Profeel 評論0 收藏0
  • React性能優(yōu)化

    摘要:當大家考慮在項目中使用的時候,第一個問題往往是他們的應(yīng)用的速度和響應(yīng)是否能和非版一樣,每當狀態(tài)改變的時候就重新渲染組件的整個子樹,讓大家懷疑這會不會對性能造成負面影響。 當大家考慮在項目中使用 React 的時候,第一個問題往往是他們的應(yīng)用的速度和響應(yīng)是否能和非 React 版一樣,每當狀態(tài)改變的時候就重新渲染組件的整個子樹,讓大家懷疑這會不會對性能造成負面影響。React 用了一些黑...

    n7then 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<