javascript - 创建一个接受字符串并返回 true 或 false 的函数,具体取决于该字符串是否包含重复字符

标签 javascript

var arr = [];
repeatcount = 0;

function isogram(str) {
  for (var i = 0; i < str.length; i++) {
    for (var g = 0; g < arr.length; g++) {
      if (str[i] != arr[g]) {
        arr.push(str[i]);
      }
    }
  }
  if (arr.length != str.length) {
    return false
  } else {
    return true
  }
}


document.write(isogram("jiang"));

console.log(arr);

我在使用console.log(arr)的时候,发现arr是空的,不知道为什么。我使用的方法基本上是创建一个存储非重复字符的数组,然后比较长度,如果长度不同则存在重复字符。

最佳答案

由于 arr 开头的长度等于 0,所以永远不会触发内部循环。

g < arr.length // is always false

我建议您摆脱内部循环并改用一个简单的条件 - 如果当前字母不在 arr 内 - 推送它,如果有 - 不要。

var arr = [];
repeatcount = 0;

function isogram(str) {
  for (var i = 0; i < str.length; i++) {
    if (arr.indexOf(str[i]) === -1) {
       arr.push(str[i]);
    } else {
      return false;
    }
  }
  
  return arr.length === str.length;
}

console.log(isogram("jiang"));
console.log(isogram("jiiang"));

奖励:一线解决方案:

const isogram = (str) => [...str].length === [...new Set(str)].length;

console.log(isogram("jiang"));
console.log(isogram("jiiang"));

关于javascript - 创建一个接受字符串并返回 true 或 false 的函数,具体取决于该字符串是否包含重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59186685/

相关文章:

javascript - 使用 JavaScript 遍历 DOM

javascript - JavaScript中通过Object处理后的Hash数据如何获取原始类型?

javascript - WebGL/Three.js 值的边界

javascript - 在动态下拉列表AngularJS中使用ng-init

javascript - 如何将滚动条滚动到页面中央?

javascript - 如何覆盖 CompositeView 渲染方法?

javascript - 为 JavaScript 编写此 RegEx 表达式的最佳方法是什么

javascript - 检查密码是否与 jquery 匹配

javascript - 如何在一张图片中找到另一张图片? Node .js

javascript - 将 2 个按钮合并为 1 个