Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ImmutableJS记录合并_Javascript_Merge_Record_Immutable.js - Fatal编程技术网

Javascript ImmutableJS记录合并

Javascript ImmutableJS记录合并,javascript,merge,record,immutable.js,Javascript,Merge,Record,Immutable.js,我导入了一个不可变记录,并希望在将其用作应用程序的默认状态之前向该记录添加一个新属性。但是,尽管尝试了merge、mergeDeep、mergeWith和mergeDeepWith,我还是无法添加属性。它返回所有实例中的调用记录。看了之后,我决定尝试合并 下面的代码片段模拟了我的问题 a=Immutable.Record({a:1,b:2}) b=a() c=不可变的.Record({z:12}) d=c() e=b.合并(d) console.log(e.toJS()) e=b.d cons

我导入了一个不可变记录,并希望在将其用作应用程序的默认状态之前向该记录添加一个新属性。但是,尽管尝试了
merge
mergeDeep
mergeWith
mergeDeepWith
,我还是无法添加属性。它返回所有实例中的调用记录。看了之后,我决定尝试合并

下面的代码片段模拟了我的问题

a=Immutable.Record({a:1,b:2})
b=a()
c=不可变的.Record({z:12})
d=c()
e=b.合并(d)
console.log(e.toJS())
e=b.d
console.log(e.toJS())
e=b.与(d)合并
console.log(e.toJS())
e=b.与(d)合并
console.log(e.toJS())

映射是键值对象的近似值,因此请使用这些映射,而不是具有不同工厂范例的记录“记录类似于JS对象,但强制执行一组特定的允许字符串键,并具有默认值。”

const a=Immutable.Map({a:1,b:2});//或不可变。fromJS({…})
const b=Immutable.Map({z:12});
常数c=a.merge(b);
控制台日志(c)

只是想澄清一下:您想要一个带有
{a:1,b:2,z:12}
的新记录?@DominicTobias是的,这很好,但我有点受现有项目结构的限制,需要使用Record。使用记录实现这一点的任何方法?您编写代码的方式与合并不起作用,因为
a
c
是非实例化工厂,只允许修改在那里设置为默认值的键。i、 e如果您从
a
new a()
)进行记录,则不允许使用键
z
,因为出厂时未列出该键。