为了账号安全,请及时绑定邮箱和手机立即绑定

输入单词是否按字母顺序排列?

输入单词是否按字母顺序排列?

拉风的咖菲猫 2022-09-23 17:30:17

我正在编写一个函数,该函数将返回或关于输入字符串是否按字母顺序排列。我得到了,但不确定我错过了什么truefalseundefined


function is_alphabetic(str) {

  let result = true;

  for (let count = 1, other_count = 2; count >= str.length - 1, other_count >= str.length; count++,

    other_count++) {

    if (str.at[count] > str.at[other_count]) {

      let result = false

    }

    return result

  }

}

console.log(is_alphabetic('abc'));


查看完整描述

4 回答

?
胡子哥哥

TA贡献1514条经验 获得超6个赞

你已经把语句放在for循环内,它应该在循环体之外。return


您的代码也不正确。 应从 0 开始,应从 1 开始。countother_count


count >= str.length - 1应该是(此条件在代码中是完全不必要的,因为应该是循环中的终止条件)count < str.length - 1other_count < str.length



other_count >= str.length应该是other_count < str.length


这是您更正的代码


function is_alphabetic(str) {

  let result = true;


  for (let count = 0, other_count = 1; other_count < str.length; count++, other_count++) {

      if (str[count] > str[other_count]) {

         result = false

      }

  }


  return result;

}


console.log(is_alphabetic('abc'));


这是一种替代方法


function is_alphabetic(str){

   return str.split('')

             .every((c, idx) => str[idx + 1] ? c < str[idx + 1] : true);

}


console.log(is_alphabetic('abc'));


请记住,如果希望字符之间的比较不区分大小写,请在比较字符之前将字符串转换为小写。


查看完整回答
反对 回复 2022-09-23
?
当年话下

TA贡献1554条经验 获得超9个赞

代码中存在两个问题:

  1. 您的返回语句位于您的 for 循环中。为了避免这样的错误,你可以得到一个更漂亮的代码格式化程序;

  2. 您的 for 循环条件无效。请记住,for-loop 语句的第二部分应该是执行迭代并停止执行迭代。在这种情况下,您的条件将首先计算,由于逗号运算符而丢弃结果,评估立即解析为 。truefalsecount >= str.length-1, other_count >= str.lengthcount >= str.length-1other_count >= str.lengthfalse

这两件事结合在一起,使得你的函数永远不会返回,javascript 运行时将其解释为 .undefined

希望这有助于您了解出了什么问题。但正如许多其他人指出的那样,有更好的方法来解决你试图解决的问题。


查看完整回答
反对 回复 2022-09-23
?
慕运维8079593

TA贡献1564条经验 获得超5个赞

我认为如果您使用此函数比较字符串会更容易:


var sortAlphabets = function(text) {

    return text.split('').sort().join('');

};

这将产生如下结果:


sortAlphabets("abghi")

output: "abghi"

艺术


sortAlphabets("ibvjpqjk")

output: "bijjkpqv"

如果你想知道你的字符串是否按字母顺序排序,你可以使用:


var myString = "abcezxy"

sortAlphabets(myString) == myString

output: false

或者,如果您想创建一个特定的函数:


function isSorted(myString) {

    return sortAlphabets(myString) == myString

}

在这种情况下,您可以使用:


isSorted("abc")

var sortAlphabets = function(text) {

        return text.split('').sort().join('');

    };


function isSorted(myString) {

        return sortAlphabets(myString) == myString

    }

    

 alert("is abc sorted: " + isSorted("abc"));

  alert("is axb sorted: " + isSorted("axb"));


查看完整回答
反对 回复 2022-09-23
?
隔江千里

TA贡献1561条经验 获得超10个赞

您只需要将字符串与其相应的“排序”字符串进行比较即可


let string = 'abc'.split('').join('');

let sortedString = 'abc'.split('').sort().join('');


console.log(sortedString === sortedString)


let string2 = 'dbc'.split('').join('');

let sortedString2 = 'dbc'.split('').sort().join('');


console.log(string2 === sortedString2)


查看完整回答
反对 回复 2022-09-23
  • 4 回答
  • 0 关注
  • 12 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信