2016-12-01 4 views
0

Я хочу использовать функции Immutable для обновления моей структуры из этой структуры, но я не уверен, как это сделать. Мои теги не должны быть массивом, но должны стать объектами только для отправки на мой REST api.Обновление вложенных массивов Immutable.js

Существует несколько примеров того, как обновлять глубокие свойства и вложенные массивы, но я хочу изменить значения 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