remove
为什么下划线没有超级简单的功能?
var arr = [1,2,3,4,5];
_.remove(arr, 5);
当然我可以使用reject
or without
... 但它们都不是破坏性的。我错过了什么吗?
我想我会用老式的方式来做...
arr.splice(arr.indexOf(5), 1);
啊
remove
为什么下划线没有超级简单的功能?
var arr = [1,2,3,4,5];
_.remove(arr, 5);
当然我可以使用reject
or without
... 但它们都不是破坏性的。我错过了什么吗?
我想我会用老式的方式来做...
arr.splice(arr.indexOf(5), 1);
啊
这是因为 Underscore 为 JavaScript 提供了函数式概念,而函数式编程的关键概念之一是引用透明性。
本质上,函数没有副作用,并且对于给定的输入总是返回相同的输出。换句话说,所有函数都是pure。
对于给定的输入,从数组中删除一个元素确实是一个可预测的结果,但结果将是副作用而不是返回值。因此,破坏性功能不适合功能范式。
在下划线中从数组中删除值的正确方法已经在 Stack Overflow 上详细讨论过。附带说明一下,使用without
,reject
或时filter
,如果您只想从数组中删除一个项目的单个实例,则需要唯一标识它。所以,以这种方式:
arr = _.without(arr, 5);
您将删除from的所有实例。5
arr