Immutable.js provides several conversion methods to migrate one structure to another. Each Immutable.js class contains a prefixed "to" method like Map.toList(), Map.toSet(), etc. Converting these types sometimes results in a loss of data, as we will see when converting from Map to List.

Map to List:

  it('should convert Map() to List()', () => {

    const map = Immutable.Map({
key1: 'First Item',
key2: 'Second Item'
}); const convertedList = map.toList(); expect(Immutable.List.isList(convertedList)).to.be.true; // Keys are discarded
expect(convertedList.first()).to.equal('First Item');
expect(convertedList.last()).to.equal('Second Item'); });

List to Map:

  it('should convert List() to Map()', () => {

    const list = Immutable.List.of('First Item', 'Second Item');

    const convertedMap = list.toMap();

    // Converted keys ascend numerically
keys = convertedMap.keys();
expect(keys.next().value).to.equal(0);
expect(keys.next().value).to.equal(1); expect(Immutable.Map.isMap(convertedMap)).to.be.true; expect(convertedMap.first()).to.equal('First Item');
expect(convertedMap.last()).to.equal('Second Item'); });

Map to Javascript Array:

  it('should convert Map() to Javascript Array', () => {

    const map = Immutable.Map({
key1: 'First Item',
key2: 'Second Item',
key3: {key4: 'Nested Item'}
}); const arr = map.toArray(); // Keys are discarded
expect(arr[0]).to.equal('First Item');
expect(arr[1]).to.equal('Second Item');
expect(arr[2].key4).to.equal('Nested Item'); });

Map to JSON:

  it('should convert Map() to JSON', () => {

    const map = Immutable.Map({
key1: 'First Item',
key2: 'Second Item',
key3: {key4: 'Nested Item'}
}); const json = map.toJSON(); expect(json.key1).to.equal('First Item');
expect(json.key2).to.equal('Second Item');
expect(json.key3.key4).to.equal('Nested Item'); });

[Immutable.js] Converting Immutable.js Structures to Javascript and other Immutable Types的更多相关文章

  1. [Immutable.js] Using fromJS() to Convert Plain JavaScript Objects into Immutable Data

    Immutable.js offers the fromJS() method to build immutable structures from objects and array. Object ...

  2. [Javascript] Modifying an Immutable.js Map()

    We will now look at five methods that modify an Immutable.Map(). set update delete clear merge //set ...

  3. Numeral.js – 格式化和操作数字的 JavaScript 库

    Numeral.js 是一个用于格式化和操作数字的 JavaScript 库.数字可以格式化为货币,百分比,时间,甚至是小数,千位,和缩写格式,功能十分强大.支持包括中文在内的17种语言. 您可能感兴 ...

  4. 【JavaScript】前端开发框架三剑客—AngularJS VS. Backone.js VS.Ember.js

    摘要:透过对Github,StackOverflow,YouTube等社区进行数据收集后可知,AngularJS在各大主流社区中都是最受欢迎的,Backbone.js与Ember.js则不相伯仲.本文 ...

  5. Baffle.js – 用于实现文本模糊效果的 JavaScript 库

    Baffle.js 是一个 JavaScript 库,设计用来模糊和揭开DOM元素的文本. 这些元素可以是一个 CSS 选择器的形式.一个节点列表或者一个单节点. 你也可以传递一个选择对象给插件. 在 ...

  6. JavaScript 之 动态加载JS代码或JS文件

    2.动态加载JS文件 <script type="text/javascript"> function loadScript(url, callback) { var ...

  7. JavaScript模块化-require.js,r.js和打包发布

    在JavaScript模块化和闭包和JavaScript-Module-Pattern-In-Depth这两篇文章中,提到了模块化的基本思想,但是在实际项目中模块化和项目人员的分工,组建化开发,打包发 ...

  8. Atitit.js模块化 atiImport 的新特性javascript import

    Atitit.js模块化 atiImport 的新特性javascript import 1. 常见的js import规范amd ,cmd ,umd1 1.1. Require更多流行3 2. at ...

  9. Electron、Node.js、JavaScript、JQuery、Vue.js、Angular.js,layui,bootstrap

    转载:https://blog.csdn.net/meplusplus/article/details/79033786 layui :是基于jquery库的封装开发. bootstrap:同样基于 ...

随机推荐

  1. 在Ubuntu上下载、编译和安装Android最新内核源代码(Linux Kernel)

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6564592 在前一篇文章提到,从源代码树下载下 ...

  2. cocos2d-x 3.6版连连看

    写个连连看来讲游戏开发,我认为实例解说效果会好一些. 终端以下cd到源代码文件夹,敲命令: cocos new LLK -p com.goonear.llk -l cpp -d ./Goonear 脚 ...

  3. traceroute原理

    traceroute原理 ICMP ICMP全称为Internet Control Message Protocol,即,网络控制报文协议. 当一个IP数据报发送失败时,最后一个路由器会向发送发传递一 ...

  4. CentOS CVS安装使用

    CentOS CVS安装使用   一.CVS简介 CVS(Concurrent Versions System)版本控制系统:是一种GNU软件包,CVS是一个C/S系统,主要用于在多人开发环境下的源码 ...

  5. unity 之2D游戏简单操作

    unity 做2D项目也很方便.  首先要调整camera的模式,camera 的检视面板参数如下: perspective 模式就是平时用的 模式.摄像机到游戏物体是有角度的张开, 而 orthog ...

  6. 2、shell命令学习

    1.第一个例子 touch test.sh vim test.sh #!/bin/bash echo "hello world" chmod 755 test.sh ./test. ...

  7. c#鼠标在控件上面,然后显示文字

    先添加toolTip控件到界面 然后每个控件的属性会多一项 ToolTip 第一种:直接给里面加文字 第二种: private void pictureBox_topmost_MouseHover(o ...

  8. Sql server统计查询语句消耗时间

    1. set statistics time on go  xxxx go set statistics time off 2. DECLARE @begin dateTime DECLARE @en ...

  9. ubuntu 下搭建一个python3的虚拟环境(用于django配合postgresql数据库开发)

     #安装python pip  (在物理环境中安装) sudo apt-get install python-pip       sudo apt-get install python3-pipsud ...

  10. python文件_改名2

    #手动选择路径,批量改名 import os,re,time,tkFileDialog global i #文件名后面增加后缀:txt,png,bng,jpeg,jpg,gif,zip类型的文件 de ...