[Immutable.js] Converting Immutable.js Structures to Javascript and other Immutable Types

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‘);

  });
时间: 2025-01-01 23:51:31

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

[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. Objects are converted into maps. Arrays are converted into lists. The fromJS() method can also take a reviver function for custom conversions.  Object to Im

[Javascript] Modifying an Immutable.js Map()

We will now look at five methods that modify an Immutable.Map(). set update delete clear merge //set() var map = Immutable.Map(); var todo = { id: +new Date(), name: "todo1", content: "learning Immutable" } map = map.set(todo.id, todo)

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

Numeral.js 是一个用于格式化和操作数字的 JavaScript 库.数字可以格式化为货币,百分比,时间,甚至是小数,千位,和缩写格式,功能十分强大.支持包括中文在内的17种语言. 您可能感兴趣的相关文章 太赞了!超炫的页面切换动画效果[附源码下载] 创意无限!一组网页边栏过渡动画[附源码下载] 真是好东西!13种非常动感的页面加载动画效果 你见过吗?9款超炫的复选框(Checkbox)效果 时尚设计!三种奇特网格加载效果[附源码下载] 源码下载      在线演示 本文链接:Numer

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

2.动态加载JS文件 <script type="text/javascript"> function loadScript(url, callback) { var script = document.createElement("script"); script.type = "text/javascript"; if(typeof(callback) != "undefined"){     if (scri

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

Baffle.js 是一个 JavaScript 库,设计用来模糊和揭开DOM元素的文本. 这些元素可以是一个 CSS 选择器的形式.一个节点列表或者一个单节点. 你也可以传递一个选择对象给插件. 在线演示      立即下载 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScript 特效 Web 开发中很实用的10个效果[源码下载] 12款经典的白富美型 jQuery 图片轮播插

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

摘要:透过对Github,StackOverflow,YouTube等社区进行数据收集后可知,AngularJS在各大主流社区中都是最受欢迎的,Backbone.js与Ember.js则不相伯仲.本文将对当前三款流行的Web开发框架作个简单比较. 是否选择了合适的框架进行Web开发对项目是有重大影响的.我们都希望找到一个稳健的易维护的框架结构.接下来,我们一起来对当前三款流行Web开发框架作个简单比较认识. 初步认识 AngularJS诞生于2009年,是商业产品GetAngular的一部分.后

[Java][Js]利用Rhino在服务器端执行JavaScript

途牛网 5 月 9 日挂牌 5 月 9 日消息,据美国财经网站 iposcoop 网站报道,途牛旅游网将于今晚(5 月 9 日)在纳斯达克正式挂牌上市. 途牛网 4 月 4 日首次提交 IPO 招股书,最新版招股书显示,途牛网计划在纳斯达克上市,股票交易代码为"TOUR",发行价区间为每股美国存托股(ADS)9 美元至 11 美元,发行量最高 920 万股 ADS,最高融资额为 1.012 亿美元,销商为摩根士丹利国际.瑞信证券和华兴资本证券.OPPENHEIMER. 进入微软.亚马逊

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

在JavaScript模块化和闭包和JavaScript-Module-Pattern-In-Depth这两篇文章中,提到了模块化的基本思想,但是在实际项目中模块化和项目人员的分工,组建化开发,打包发布,性能优化,工程化管理都有密切的关系,这么重要的事情,在JavaScript大行其道的今天,不可能没有成熟的解决方案,所以从我的实践经验出发,从模块化讲到工程化,分享一下自己的经验. 这篇文章主要是讲require.js和r.js在项目中的使用,不会涉及到工程化问题,对此熟悉的看官可以略过此文.对

js面向对象编程/原型链/继承 —— javascript

目录 js面向对象编程 js原型链 共享方法 原型继承 js面向对象编程 js面向对象编程不同于 java 的类和对象 JavaScript 不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程. js声明的构造函数,类似于普通函数的声明,但又不同, 实例对象时,如果不写new,就是一个普通函数,它返回 undefined. 但是,如果写了new,它就变成了一个构造函数,它绑定的 this 指向新创建的对象, 并默认返回 this,也就是说,不需要在最后写return th