Javascript 为什么';t Immutable.js有一个;按值删除";选项
我目前正在将Redux应用程序的状态转换为使用Immutable.js数据结构。我看到Immutable.jsJavascript 为什么';t Immutable.js有一个;按值删除";选项,javascript,list,indexof,immutable.js,Javascript,List,Indexof,Immutable.js,我目前正在将Redux应用程序的状态转换为使用Immutable.js数据结构。我看到Immutable.js列表没有按值删除的方法(如),因此必须使用老式的.indexOf 为什么我们需要: let list = List(['a', 'b']); let aList = list.delete(list.indexOf('b')); …如果我们可以,例如: let list = List(['a', 'b']); let aList = list.deleteByValue('b');
列表
没有按值删除的方法(如),因此必须使用老式的.indexOf
为什么我们需要:
let list = List(['a', 'b']);
let aList = list.delete(list.indexOf('b'));
…如果我们可以,例如:
let list = List(['a', 'b']);
let aList = list.deleteByValue('b');
在Immutable的设计模式或精神气质中是否存在与此方法相矛盾的概念?还是像一个没有发生的功能请求一样简单
请注意,我并不是在抱怨特性,只是稍微了解一下框架的设计
谢谢 正如一些评论所提到的,它可以实现你想要的。它是一个基于值从集合中删除值的函数。添加一个
deleteValue
对扩展库并没有多大作用,实际上只是API膨胀
但是按照这种逻辑,.delete()不是已经被API膨胀了吗
对
但是Immutable.js尝试做的一件事是在它的API和JavaScript的内置数据结构之间创建对称性,例如。内置类型没有这样的deleteValue
方法,因此Immutable.js不太愿意包含该特性
我相信这也是我们有indexOf
的原因,它可以被findIndex
完全取代
免责声明:我不是Immutable.js的作者,所以我不能肯定他们的决定。这就是我对所做选择的理解。
list.filter(x=>x!='b')
?还是只需要删除第一个事件?@Bergi,谢谢你的回复。我不是问如何通过价值实现移除,因为我知道有无数种方法。我想问的是,Immutable没有这个方法是否有更大的体系结构原因,因为它只是相应的过滤器
调用的语法糖。我不知道immutable.js,你得问问它的作者,但通常你会尽量避免API膨胀。@Bergi说得对。但按照这种逻辑,.delete()
不是已经被API膨胀了吗?有趣的是,它本身就是list.splice(index,1)
的同义词。非常感谢。