2017-03-24 83 views
4

考虑下面的代码:Immutable.Map.deleteAll()不是一个函数

const person = Immutable.Map({ 
    name: 'John', 
    surname: 'Maverick', 
    age: 39 
}); 

const mutated = person.deleteAll(['name', 'age']); 

预期的结果将是mutated现在地图与删除键nameage一个新的实例。然而,抛出一个异常:

Uncaught TypeError: person.deleteAll is not a function

当检查Immutable.Map原型可用的方法,没有deleteAll也不removeAll方法。他们被删除?

该方法在ImmutableJS官方文档中列出,但它不可用。在这种情况下,什么是本地不可变的替代方案? 谢谢。

回答

4

看起来像是只被最新的版本(ver. 4 RC1 & RC2)加入。我查看了src的代码,但没有在3.8.1中找到它。除非你想使用4.0.0-rc.2,否则没有其他方法可以使用该方法。

2

如前所述,deleteAll仅限于发布候选版本。你可以得到相同的结果...

const mutated = ['name', 'age'].reduce((map, key) => map.delete(key), person);