簡體   English   中英

如何在Immutable.js中將列表添加到列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM