javascript - 如何在 JavaScript 中使用 reduce 而不是 for 循环构建 contains 函数?

标签 javascript for-loop functional-programming reduce

我想这是两个问题。我仍然在使用 reduce 方法时遇到问题,我得到了使用它的简单方法

reduce([1,2,3], 函数(a, b) { 返回 a + b; }, 0); //6

将它与数字以外的任何东西一起使用真的让我感到困惑。那么我如何使用 reduce 代替 for 循环来构建一个包含函数呢?评论将不胜感激。谢谢大家。

function contains(collection, target) {
  for(var i=0; i < collection.length; i++){
    if(collection[i] === target){
      return true;
    }
  }
  return false;
}
contains([1, 2, 3, 4, 5], 4);
//true

最佳答案

这是你需要的:

function contains(collection, target) {
    return collection.reduce( function(acc, elem) {
       return acc || elem == target;
    }, false)
};

正如 adaneo 所说,对于这个特定问题可能有更简单的方法,但是您将此标记为“函数式编程”,所以我猜您想在这种解决问题的方法上做得更好,我完全赞同。

关于javascript - 如何在 JavaScript 中使用 reduce 而不是 for 循环构建 contains 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33243609/

相关文章:

javascript - 管理状态并使用输入

python - 是否有一种 Pythonic 方式来关闭循环变量?

haskell - 获得最大值的函数

lambda - Java8 Stream.map 在同一流上输出不同的映射函数?

haskell - Haskell 程序可以表示为 Lisp S 表达式吗?

php - 在 HTML 中显示网页的当前 URL(动态)

function - 尝试创建一个从数组中提取 URL 的函数。 JavaScript

javascript - 跨组件发送多个 Prop React

python - 如何使用python生成多个文件路径并将它们保存到excel中

创建一个多维数组以在 C 中存储许多不同大小的数组