博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端进阶 -js数据结构类型扩展:immutable-js(10)
阅读量:7040 次
发布时间:2019-06-28

本文共 1478 字,大约阅读时间需要 4 分钟。

  hot3.png

相对java.net之类的强类型语言,js有一点很大的区别就是,数据结构只有arrayobject,并且都是动态可变的,而javaList, Set, Map等数据结构。所以,为了能在js中也使用这些数据结构,immutable-js就应运而生。

1. immutable-js

immutable-js 扩充了JavaScript中的不可变集合,即一旦创建就不能改变的数据类型。这样可简化应用开发,无防御复制,启用更先进的内存方案,以及使用更简单的逻辑检查更新。持久化数据提供可修改的API,这些API不在原地更新数据,而是产生新的更新后的数据。

2.提供的数据类型

  1. List:有序索引集合,类似JavaScript中的数组
  2. Map:无序键值对((key,value)pairs)集合
  3. OrderedMap:有序的 Map
  4. Set:无重复值的集合
  5. OrderedSet:有序的 Set
  6. Stack:支持元素添加和移除的索引集合
  7. Range():返回一个从startend,步长填充stepSeq.Indexed集合,start默认值为0step默认值为1end默认为无穷大。如果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)

详情参考。

在这里给大家分享一下,我是一名5年前端工程师,自己建了一个q群:731771211 ,群里不停更新最新的教程和学习方法,加入一起学习与交流

转载于:https://my.oschina.net/zybc/blog/2206211

你可能感兴趣的文章
Mongodb Sharding Cluster 三台
查看>>
Spring boot with Oracle
查看>>
Android设计模式系列(10)--SDK源码之原型模式
查看>>
对象的共享
查看>>
android在线API地址
查看>>
Verson Magic problem
查看>>
Passcode
查看>>
TapKu Graph
查看>>
面试需要的基础知识-合并排序数组
查看>>
关于Unity 2018的实体组件系统(ECS)一
查看>>
Echarts---添加渐变功能
查看>>
linux 下解压命令大全
查看>>
深入了解 Linux下安装DNS+Sendmail服务
查看>>
python在类中实现swith case功能
查看>>
Maven com.sun.jdmk:jmxtools:jar 下载不下来
查看>>
DevExpress之Skin自定义使用
查看>>
可变参数
查看>>
[日推荐]『饿了么外卖服务』饿了么官方小程序,无需下载安装!
查看>>
JavaScript 作用域
查看>>
Linux Ubuntu 16.04 主机名设置
查看>>