2016-12-01 38 views
0

我想利用Immutable的函数从这个结构更新我的结构,但我不确定如何去做。我的标签不应该是一个数组,但应该成为只发布到我的REST API的对象。Immutable.js嵌套数组updateIn

有几个关于如何更新深层属性和嵌套数组的例子,但是我想深入地改变值2数组。

order: { 
    createDate: '2016-08-07', 
    pickupDate: '2017-02-02', 
    items: [ 
    { 
     price: '25', 
     tags: [ 
     'Blue', 
     'Pants' 
     ] 
    } 
    ] 
} 

这种结构

order: { 
    createDate: '2016-08-07', 
    pickupDate: '2017-02-02', 
    items: [ 
    { 
     price: '25', 
     tags: [ 
     { 
      text: 'Blue' 
     }, 
     { 
      text: 'Pants' 
     } 
     ] 
    } 
    ] 
} 

回答

0

事情是这样的:

const { fromJS, Map } = require("immutable") 

const obj = fromJS({ 
    order: { 
     createDate: '2016-08-07', 
     pickupDate: '2017-02-02', 
     items: [ 
      { 
       price: '25', 
       tags: [ 
        'Blue', 
        'Pants' 
       ] 
      } 
     ] 
    } 
}) 

const items = obj 
    .getIn(['order', 'items']) 
    .map((item) => { 
     const newTags = item 
      .get('tags') 
      .map((tag) => ({ text: tag })); 
     return item.set('tags', newTags); 
    }); 

const newMap = obj.setIn(['order', 'items'], items); 
+0

作品没有瑕疵,非常感谢! – jgeerts