[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');
    
  });
原文地址:https://www.cnblogs.com/Answer1215/p/5206016.html