[英]How to add list to list in Immutable.js?
在Immutable.js中将列表添加到列表的最佳方法是什么?
concat
方法有效,但另一种方法无效。
const a = fromJS([
{
comment: 'aaaa',
who: 'a1',
buttonInfo: ['a', 'b', 'c'],
},
{
comment: 'bb',
who: 'a2',
buttonInfo: ['a', 'b', 'c'],
},
]);
const b = fromJS([
{
comment: 'ccc',
who: 'c1',
buttonInfo: ['a', 'b'],
},
{
comment: 'ddd',
who: 'd2',
buttonInfo: ['a''],
},
]);
这正在工作:
a.concat(b)
但这不起作用:
[...a ,...b]
// or
b.map(v => {
a.push(v);
})
您可以使用doc中所说的concat方法:
const list1 = List([ 1, 2, 3 ]); const list2 = List([ 4, 5, 6 ]); const array = [ 7, 8, 9 ]; const list3 = list1.concat(list2, array); // List [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
ImmutableJS列表具有一个名为concat的方法,其行为与普通的javascript数组相同。 但是,不能对不可变数组使用扩展语法。
而且push的语法与普通数组不同,push像concat和Immutable List会返回一个新列表,您的map方法将类似于
b.map(v => {
a = a.push(v);
})
PS虽然使用上述方法将使数组
a
突变。 如果要使用push,必须创建一个新的List,然后将两个数组内容都推送到其中。 但是concat
是您解决问题的最佳方法
为了在Immutable.js中将List添加到List中,可以使用merge
方法。
例:
const a = fromJS(
[
{
comment: 'aaaa',
who: 'a1',
buttonInfo: ['a', 'b', 'c'],
},
{
comment: 'bb',
who: 'a2',
buttonInfo: ['a', 'b', 'c'],
},
]
);
const b = fromJS(
[
{
comment: 'ccc',
who: 'c1',
buttonInfo: ['a', 'b'],
},
{
comment: 'ddd',
who: 'd2',
buttonInfo: ['a''],
},
]
);
a.merge(b);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.