2016-12-01 37 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