javascript - 替换 Javascript 中的 "||"条件

标签 javascript if-statement higher-order-functions or-operator or-condition

好吧,这是我的第一篇堆栈溢出帖子!

大家好,最近学习了很多关于函数式编程的知识。我在 funfunfunction 找到了一些旧视频这吊起了我的胃口,我一直在玩它们。

我的问题是......是否有更好/不同/首选的方式来重构这段代码:

if ( bodyClasses.contains("first-class") || bodyClasses.contains("second-class") || bodyClasses.contains("third-class") ) {
        pages.filter((page) => searchAndReplace( page.postType, ".selector" ));
}

我尝试使用reduce(),但很快就了解到,一旦第一次迭代返回true,我就需要提前中断reduce。我觉得 if 语句在这里有意义,但我只是好奇。

我知道这是一小段没有上下文的代码,但问题在于概念而不是功能

对于任何回复的人,我提前感谢您!

最佳答案

要摆脱 or,请与 .some 数组值匹配:

if(["first-class", "second-class", "third-class"].some(cls => bodyClasses.contains(cls)))
 /*...*/;

如果您不对返回值执行任何操作,我不会使用 .filter,那么只需使用 .forEach

关于javascript - 替换 Javascript 中的 "||"条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55010619/

相关文章:

javascript - 尾递归二叉树搜索函数JS

c++ - 返回没有 std::function 的 lambda

reactjs - HOC 中的内部函数如何获取 props

string - Clojure 字符串映射

javascript - 如何使Javascript "isPrototypeOf"函数返回true?

javascript - 具有淡入淡出效果的全背景图像

javascript - Material Design React 多选占位符

c - 如何在C中标记要选择的字符

java - 如果用户输入错误答案,如何跳回到 if 语句的开头

python - 如何使用 python 将 else 语句作为 lambda 的一部分添加到 for 循环内的 if