2017-08-28 19:56:17 +00:00
|
|
|
---
|
|
|
|
title: Immutable.js
|
|
|
|
category: JavaScript libraries
|
|
|
|
---
|
|
|
|
|
2017-10-27 04:50:39 +00:00
|
|
|
### Maps
|
2017-08-28 19:56:17 +00:00
|
|
|
|
|
|
|
```js
|
|
|
|
var map = Immutable.Map({ a: 1, b: 2, c: 3 })
|
2017-10-27 04:50:39 +00:00
|
|
|
```
|
2017-08-28 19:56:17 +00:00
|
|
|
|
2017-10-27 04:50:39 +00:00
|
|
|
```js
|
2017-08-28 19:56:17 +00:00
|
|
|
map
|
|
|
|
.set('b', 50)
|
|
|
|
.get('b') // 50
|
|
|
|
```
|
|
|
|
|
2017-10-27 04:50:39 +00:00
|
|
|
### Lists
|
2017-08-28 19:56:17 +00:00
|
|
|
|
|
|
|
```js
|
|
|
|
var list = Immutable.List.of(1, 2)
|
|
|
|
|
|
|
|
list
|
|
|
|
.push(3, 4, 5)
|
|
|
|
.unshift(0)
|
|
|
|
.concat(list2, list3)
|
|
|
|
.get(0)
|
|
|
|
.size
|
|
|
|
```
|
|
|
|
|
2017-10-27 04:50:39 +00:00
|
|
|
### Nested maps
|
2017-08-28 19:56:17 +00:00
|
|
|
|
|
|
|
```js
|
|
|
|
var nested = Immutable.fromJS({ user: { profile: { name: 'John' } } })
|
|
|
|
|
|
|
|
nested
|
2017-10-27 04:50:39 +00:00
|
|
|
// Update
|
2017-08-28 19:56:17 +00:00
|
|
|
.mergeDeep({ user: { profile: { age: 90 } } })
|
|
|
|
.setIn([ 'user', 'profile', 'name' ], 'Jack')
|
|
|
|
.updateIn([ 'user', 'profile', 'name' ], (s) => s.toUpperCase())
|
2017-10-27 04:50:39 +00:00
|
|
|
|
|
|
|
// Get
|
2017-08-28 19:56:17 +00:00
|
|
|
.getIn(['user', 'profile', 'name']) // 'JACK'
|
|
|
|
```
|