Immutable.js嵌套数组updateIn

时间:2016-12-01 21:08:49

标签: javascript immutable.js

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

有几个关于如何更新深度属性和嵌套数组的示例,但我想更改深度值为2的数组。

auth.token.sub

到这个结构

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

1 个答案:

答案 0 :(得分: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);