javascript - 使用 Immutable.js 的 mergeDeep() 时丢失属性

标签 javascript immutable.js

我正在尝试使用 mergeDeep() 合并 2 个不可变映射,如下所示不可变的.js

import { expect } from 'chai';
import Immutable from 'immutable';
describe.only('Test', () => {
    it('should return correct merged objects', () => {
        const current = Immutable.Map({
            a: [],
            b: {},
            c: {
                'c01': {
                    key: 'c01'
                }
            }
        });
        const next = {
            a: [],
            b: {},
            c: {
                'c01': {
                    key: 'c01'
                },
                'c02': {
                    key: 'c02'
                }
            }
        };
        const newObj = Immutable.Map({
            a: [],
            b: {},
            c: {
                'c02': {
                    key: 'c02'
                }
            }
        });
        expect(current.mergeDeep(newObj).toJSON()).to.deep.equal(next);
    });
});

但是,合并后缺少属性“c01”。

 AssertionError: expected { Object (a, b, ...) } to deeply equal { Object (a, b, ...) }
      + expected - actual

       {
         "a": []
         "b": {}
         "c": {
      +    "c01": {
      +      "key": "c01"
      +    }
           "c02": {
             "key": "c02"
           }
         }

mergeDeep() 是否可以对来自 2 个不同 Map 对象的不同属性进行合并,或者只合并两者共有的属性?如果不能,我怎样才能像上面那样得到预期的合并对象?

最佳答案

改变

const current = Immutable.Map({ ... });

const current = Immutable.fromJS({ ... });

关于javascript - 使用 Immutable.js 的 mergeDeep() 时丢失属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34605528/

相关文章:

javascript - 不可变的js平面zip两个列表

php - Eclipse:如何将 *.js.php 文件突出显示为 JavaScript

javascript - 从 onClick 调用函数时找不到变量

javascript - 使用谷歌地图 v2 的侧边栏和选项卡式信息窗口

javascript - NodeJS - 发送消息时 Nodemailer 无法响应.json

javascript - 为什么不相关的元素会触发此点击事件?

reactjs - 何时将 .toJS() 与 Immutable.js 和 Flux 一起使用?

javascript - ImmutableJS - 插入嵌套数组

javascript - 按日期排序列表 Immutable JS

javascript - 集合与有序集合