2015-10-26 43 views
1

我有这个immutableJs地图:Immutablejs - 更新值在嵌套的地图和列表

event: { 
    days: [ 
     { 
      date: 1, 
      sessions: [ 
       { 
        id: 1, 
        name: 2, 
        startTime: 1, 
        endTime: 1, 
        description: 1, 
        detailsLink: 1, 
        details: {visible: true} 
       }, 
       { 
        id: 2, 
        name: 2, 
        startTime: 2, 
        endTime: 2, 
        description: 2, 
        detailsLink: 2, 
        details: {visible: false} 
       }, 
       { 
        id: 3, 
        name: 3, 
        startTime: 3, 
        endTime: 3, 
        description: 3, 
        detailsLink: 3, 
        details: {visible: true} 
       } 
      ] 
     }, 
     { 
      date: 2, 
      sessions: [ 
       { 
        id: 1, 
        name: 2, 
        startTime: 1, 
        endTime: 1, 
        description: 1, 
        detailsLink: 1, 
        details: {visible: false} 
       }, 
       { 
        id: 2, 
        name: 2, 
        startTime: 2, 
        endTime: 2, 
        description: 2, 
        detailsLink: 2, 
        details: {visible: false} 
       }, 
       { 
        id: 3, 
        name: 3, 
        startTime: 3, 
        endTime: 3, 
        description: 3, 
        detailsLink: 3, 
        details: {visible: true} 
       } 
      ] 
     } 
    ] 
} 

我想更新是可见的:真实可见:假的。我用过滤器,seq等尝试了很多不同的方法,但没有运气。

任何想法,我怎么可以用immutableJs做到这一点?

回答

-1

在ES6,这可能可以很容易地转化为immutableJS ....

const notVisibleEvents = { 
    ...events, 
    days: events.days.map(d => { 
     return { 
      ...d, 
      sessions: d.sessions.map(s => { 
       return { 
        ...s, 
        details: { 
         ...s.details, 
         visible: false 
        } 
       }; 
      }) 
     }; 
    }) 
};