javascript - 如何以函数式风格做嵌套的 For 循环

标签 javascript for-loop functional-programming nested higher-order-functions

我正在学习函数式编程,完全摆脱 for 循环有时是一个挑战,因为它们提供了如此多的控制和自由。下面是检查字符串是否为 isogram 的示例(不应重复任何字母)。使用嵌套的 for 循环,它成为一个简单的解决方案。有没有办法用任何高阶函数或其他任何函数来实现这个功能?任何建议都会有很大的帮助。

代码:

function isIsogram(string) {
  let array = string.split('');
  let condition = true;
  for (let i = 0; i < string.length; i++) { //first loop picks character
    for (j = i + 1; j < string.length; j++) { //second loop compares it rest
      if (array[i].toLowerCase() == array[j].toLowerCase())
        condition = false; //if repeat, the condition false
    }
    return condition;
  }
}

最佳答案

您可以使用 everysome连同合适的字符串函数:

function isIsogram(string) {
    string = string.toLowerCase(); // case insensitive
    return string.split('').every(function(character, index) {
        return !string.includes(character, index+1);
    });
}

而不是 includes您可能还利用了 indexOf .

关于javascript - 如何以函数式风格做嵌套的 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39434953/

相关文章:

javascript - 将无序列表制作成下拉菜单

javascript - 切换按钮在桌面/移动 View 之间切换,如 chrome 桌面站点

Java8 供应商是可选的消费者

python - 从 2 开始计数

javascript - 如何从多维数组中迭代表中的数据

haskell - Control.Monad.Reader.withReader 实际上是 Data.Functor.Contravariant.contramap 吗?

typescript - fp-ts在mapLeft内部调用异步函数

javascript - 如何将github OAuth数据发送给客户端?

javascript - WebWorker 计算慢速正则表达式匹配速度明显慢 (3x) - 仅限 firefox

带有 While 循环的 PHP 表单仅发送最后一个 $_POST 复选框