function isIsogram无法正常工作

时间:2017-10-09 13:42:21

标签: javascript

创建一个名为isIsogram的函数,它接受一个参数,一个单词来测试它是否是等值线图。此函数应返回一个布尔值,指示它是否是Javascript中的isogram(true)或不是(false)。这是我的代码:

function isIsogram(word){
    if (word !== 'string'){
      return 'Argument should be a string';
    }

    if (word === ' '){
      return false;
    }

    else{
      var str = word.toLowerCase();
      for(var i=0; i<str.length;i++){
        if (charAt[i]>1){
          return false;
        }
        else{
          return true;
        }
      }
    }
  }
  console.log(isIsogram('Dermatoglyphics'));

然而,代码为Dermatoglyphics返回'Argument,而不是字符串',它不应该

2 个答案:

答案 0 :(得分:0)

工作正常

你遇到的问题

你将辩论Dermatoglyphics传递给string这就是为什么如果条件为真并给出消息Argument should be a string并返回

&#13;
&#13;
function isIsogram(word) {
  if (word !== 'string') {
    return 'Argument should be a string';
  }

  if (word === ' ') {
    return false;
  } else {
    var str = word.toLowerCase();
    for (var i = 0; i < str.length; i++) {
      if (charAt[i] > 1) {
        return false;
      } else {
        return true;
      }
    }
  }
}
console.log(isIsogram('Dermatoglyphics'));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

假设您需要检查一个字母是否只出现在时间上,那么您可以使用一个对象并为每个找到的字母取一个标记。通过检查letter对象,如果找到重复的字母,则函数exit为false。

function isIsogram(word) {
    var str = word.toLowerCase(),
        letter = Object.create(null),
        i;

    if (typeof word !== 'string') {
        return 'Argument should be a string';
    }

    if (word === ' ') {
        return false;
    }
  
    for (i = 0; i < str.length; i++) {
        if (letter[str[i]]) {
            return false;
        }
        letter[str[i]] = true;
    }
    return true;
}

console.log(isIsogram('Dermatoglyphics'));