更新地图中列表中的项目

时间:2017-01-09 21:57:22

标签: javascript immutable.js

说我有这样的结构:

Map({
  isFetching: false,
  page: 1,
  endOfResults: false,
  results: List()
})

如何更新此列表中的项目。

说我的清单如下:

Map({
  isFetching: false,
  page: 1,
  endOfResults: false,
  results: List(fromJS([
    {id: 1, scored: 0, conceded: 1},
    {id: 2, scored: 2, conceded: 1},
    {id: 3, scored: 2, conceded: 1},
  ]))
})

如何更新id为2的嵌套列表项为:

{id: 2, scored:3, conceded: 2}

1 个答案:

答案 0 :(得分:1)

您可以使用updateIn方法:



// Sample data
var data = Immutable.Map({
  isFetching: false,
  page: 1,
  endOfResults: false,
  results: Immutable.fromJS([
    {id: 1, scored: 0, conceded: 1},
    {id: 2, scored: 2, conceded: 1},
    {id: 3, scored: 2, conceded: 1},
  ])
});

// Get modified result
data = data.updateIn(['results',1],x => Immutable.fromJS({id:2, scored:3, conceded:2}));

// Show result                         
console.log(data.toJS());

.as-console-wrapper { max-height: 100% !important; top: 0; }

<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.min.js"></script>
&#13;
&#13;
&#13;