【问题标题】:Remove value from array in Underscore从下划线中的数组中删除值
【发布时间】:2015-06-05 05:37:58
【问题描述】:

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

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

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

我想我会用老式的方式来做......

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

【问题讨论】:

标签: javascript underscore.js


【解决方案1】:

说明

这是因为 Underscore 为 JavaScript 提供了函数式概念,而函数式编程的关键概念之一是Referential Transparency

本质上,函数没有副作用,并且对于给定的输入总是返回相同的输出。也就是说,所有函数都是pure

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

解决方案

在下划线中从数组中删除值的正确方法已经在 Stack Overflow here 上进行了详细讨论。附带说明一下,当使用withoutrejectfilter 时,如果您只想从数组中删除一个项目的单个实例,则需要对其进行唯一标识。所以,以这种方式:

arr = _.without(arr, 5);

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

【讨论】:

  • @AaronF 很好。我已经更新了我的答案以调用此功能。
猜你喜欢
  • 1970-01-01
  • 2012-05-27
  • 2019-11-25
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多