2015-10-26 38 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 
        } 
       }; 
      }) 
     }; 
    }) 
};