函数中的for循环不正确

时间:2017-10-09 16:03:46

标签: javascript

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

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

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

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

'Akosombo'应该返回false,但它返回true。

2 个答案:

答案 0 :(得分:2)

这在逻辑上是无关紧要的:

import React, { Component } from 'react';

class WeddingPage extends Component {
  render() {
    return (
      <div>
        {this.props.match.params.pageName}
      </div>
    );
  }
}

export default WeddingPage;

所有这些评估为word.charAt(i) > 1

  • false
  • 'A' > 1
  • 'k' > 1
  • 'o' > 1
  • 's' > 1
  • 'o' > 1
  • 'm' > 1
  • 'b' > 1

更多提示:

  1. 您应该检查Isogram
  2. 的定义
  3. 'o' > 1循环后,您应该只return true

答案 1 :(得分:0)

根据Wikipedia,等值线图是一个没有重复字母的单词或短语。

所以在这里你必须检查重复的字母。这是我的方法(在您的代码中稍作修改)来检查它是否是isogram?

function isIsogram(word) {
    var matches = 0;
    var count = 0;
    if (typeof word !== 'string') {
        return 'Argument should be a string';
    }

    if (word === ' ') {
        return false;
    } else {
        for (var i = 0; i < word.toLowerCase().length; i++) {
            matches = word.match(new RegExp(word.charAt(i), 'gi'));
            if (matches.length > 1)
                count++;
        }
        if (count > 0)
            return false;
        else
            return true;
    }
}
isIsogram('Akosombo');

结果将用“Akosombo”字样来表示错误,因为它具有重复的字符,即&#39; o&#39;。