首頁 >web前端 >js教程 >js資料結構類型擴展immutable-js的使用介紹(程式碼範例)

js資料結構類型擴展immutable-js的使用介紹(程式碼範例)

不言
不言原創
2018-09-17 14:43:282037瀏覽

這篇文章帶給大家的內容是關於js資料結構類型擴充immutable-js的使用介紹(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

相對java、.net 之類的強型別語言,js 有一點很大的差別就是,資料結構只有array 與object,而且都是動態可變的,而java 有List, Set, Map等資料結構。所以,為了能在 js 中也使用這些資料結構,immutable-js 就應運而生。

1. immutable-js

immutable-js 擴充了 JavaScript 中的不可變集合,也就是一旦建立就不能改變的資料型別。這樣可簡化應用程式開發、無防禦複製、啟用更先進的記憶體方案,以及使用更簡單的邏輯檢查更新。持久化數據提供可修改的 API,這些 API 不在原地更新數據,而是產生新的更新後的數據。

2. 提供的資料型別

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.提供的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}, []

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

相關文章

看更多