這篇文章帶給大家的內容是關於js資料結構類型擴充immutable-js的使用介紹(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
相對java、.net 之類的強型別語言,js 有一點很大的差別就是,資料結構只有array 與object,而且都是動態可變的,而java 有List, Set, Map等資料結構。所以,為了能在 js 中也使用這些資料結構,immutable-js 就應運而生。
immutable-js 擴充了 JavaScript 中的不可變集合,也就是一旦建立就不能改變的資料型別。這樣可簡化應用程式開發、無防禦複製、啟用更先進的記憶體方案,以及使用更簡單的邏輯檢查更新。持久化數據提供可修改的 API,這些 API 不在原地更新數據,而是產生新的更新後的數據。
1、List: 有序索引集合,類似JavaScript 中的Array
2、Map: 無序鍵值對((key , value) pairs)集合
3、OrderedMap: 有序的Map
4、Set: 無重複值的集合
5、OrderedSet: 有序的Set
6、Stack: 支援元素新增和移除的索引集合
7、Range(): 傳回一個從start 到end,步長step 填滿的Seq.Indexed 集合,start 預設值為0,step 預設值為1,end 預設為無窮大。如果 start = end,則傳回空集合。
8、Repeat(): 傳回一個用 value 重複 times 次的 Seq.Indexed 集合。如果 times 未定義,則傳回無限 value 值的 Seq 集合。
9、Record: 類似JavaScript 的Object,但只接收特定字串為key,並有預設值
10、Seq: 允許不透過中間集合讓高階集合函數(如map, filter)高效鍊式呼叫的惰性運算集合
11、Collection: 所有資料結構的基底類別
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}, []
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)
以上是js資料結構類型擴展immutable-js的使用介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!