Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从下划线中的数组中删除值_Javascript_Underscore.js - Fatal编程技术网

Javascript 从下划线中的数组中删除值

Javascript 从下划线中的数组中删除值,javascript,underscore.js,Javascript,Underscore.js,为什么下划线中没有一个超级简单的remove函数 var arr = [1,2,3,4,5]; _.remove(arr, 5); 当然我可以使用拒绝或而不使用。。。但它们都不是破坏性的。我错过什么了吗 我想我会用传统的方式 arr.splice(arr.indexOf(5), 1); 呃解释 这是因为下划线为JavaScript提供了函数概念,函数编程的关键概念之一是 从本质上讲,函数没有副作用,并且对于给定的输入总是返回相同的输出。换句话说,所有的功能都是相同的 对于给定的输入,从数组中

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

var arr = [1,2,3,4,5];
_.remove(arr, 5);
当然我可以使用
拒绝
而不使用
。。。但它们都不是破坏性的。我错过什么了吗

我想我会用传统的方式

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

解释 这是因为下划线为JavaScript提供了函数概念,函数编程的关键概念之一是

从本质上讲,函数没有副作用,并且对于给定的输入总是返回相同的输出。换句话说,所有的功能都是相同的

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

解决方案 关于堆栈溢出,已经详细讨论了从下划线中的数组中删除值的正确方法。作为旁注,当使用不带、
拒绝
筛选
时,如果只想从数组中删除项目的单个实例,则需要对其进行唯一标识。因此,以这种方式:

arr = _.without(arr, 5);

您将从
arr

中删除
5
的所有实例,因此您需要修改@AaronF Good catch的原始实例,对吗?可能的副本。我已经更新了我的答案来调用这个功能。