不可变的js更新Map中的键

时间:2016-06-23 08:49:48

标签: javascript immutable.js

所以我有一个不可变的js地图:

{
 title: "item 1",
 title2: "item 2",
 title3: "item 3"
}

我想更新密钥,因此它将变为:

{
  new title: "item 1",
  title2: "item 2",
  title3: "item 3"
}
到目前为止update()set()我只能更新值吗?是否可以更新密钥,或者在更新密钥之前是否需要进行转换?

2 个答案:

答案 0 :(得分:12)

您可以使用mapKeys作为:

var map = Immutable.Map({
  new title: "item 1",
  title2: "item 2",
  title3: "item 3"
});

map = map.mapKeys(k => {
  if (k === "title1") 
    return "newTitle";
  return k;
});

答案 1 :(得分:3)

另一种更直接的方法是使用delete

var map = Immutable.Map({
  title: "item 1",
  title2: "item 2",
  title3: "item 3"
});

map = map.set('new title', "item 1")
    .delete('title');

map = map.set('new title', map.get('title'))
    .delete('title');