从Undercore中的数组中删除值

Remove value from array in Underscore

本文关键字:删除 数组 Undercore      更新时间:2023-09-26

为什么下划线中没有一个超简单的remove函数?

var arr = [1,2,3,4,5];
_.remove(arr, 5);

当然我可以使用rejectwithout。。。但它们都没有破坏性。我是不是错过了什么?

我想我会用老式的方法。。。

arr.splice(arr.indexOf(5), 1);

通过

说明

这是因为Undercore为JavaScript提供了函数概念,而函数编程的关键概念之一是引用透明度。

从本质上讲,函数没有副作用,并且将始终为给定的输入返回相同的输出。换句话说,所有函数都是纯函数。

对于给定的输入,从数组中删除元素确实是一个可预测的结果,但结果将是副作用,而不是返回值。因此,破坏性功能不符合功能范式。

解决方案

从Underscore中的数组中删除值的正确方法已经在这里的Stack Overflow上详细讨论过了。顺便说一句,当使用withoutrejectfilter时,如果你只想从数组中删除一个项目的单个实例,你需要唯一地识别它

arr = _.without(arr, 5);

您将从arr中删除5的所有实例。