Javascript 输入的单词是否按字母顺序排列?
我正在编写一个函数,它将返回Javascript 输入的单词是否按字母顺序排列?,javascript,alphabetic,Javascript,Alphabetic,我正在编写一个函数,它将返回true或false,以确定输入字符串是否按字母顺序排列。我得到了未定义的,不确定我缺少了什么 函数为字母(str){ 让结果=真; 对于(让count=1,other_count=2;count>=str.length-1,other_count>=str.length;count++, 其他(计数++){ 如果(str.at[count]>str.at[other_count]){ 让结果=假 } 返回结果 } } console.log(是字母('abc'))
true
或false
,以确定输入字符串是否按字母顺序排列。我得到了未定义的,不确定我缺少了什么
函数为字母(str){
让结果=真;
对于(让count=1,other_count=2;count>=str.length-1,other_count>=str.length;count++,
其他(计数++){
如果(str.at[count]>str.at[other_count]){
让结果=假
}
返回结果
}
}
console.log(是字母('abc'))代码>这应该可以。我使用了.localeCompare()
,因为这将忽略小的/大写的差异,并且还将合理地处理特定于语言的字符,例如德语Umlauts
函数为字母(str){
return!str.split(“”).some((v,i,a)=>i&&v.localeCompare(a[i-1])console.log(s,是字母顺序);
我认为使用此函数比较字符串更容易:
var sortAlphabets = function(text) {
return text.split('').sort().join('');
};
function isSorted(myString) {
return sortAlphabets(myString) == myString
}
这会产生如下结果:
sortAlphabets("abghi")
output: "abghi"
或:
如果您想知道字符串是否按字母顺序排序,可以使用:
var myString = "abcezxy"
sortAlphabets(myString) == myString
output: false
或者,如果您想创建一个特定的函数:
var sortAlphabets = function(text) {
return text.split('').sort().join('');
};
function isSorted(myString) {
return sortAlphabets(myString) == myString
}
在这种情况下,您可以使用:
isSorted("abc")
var sortAlphabets=函数(文本){
返回text.split(“”).sort().join(“”);
};
函数isSorted(myString){
return sortAlphabets(myString)=myString
}
警报(“abc分类:+ISORTED(“abc”));
警报(“is axb sorted:”+isSorted(“axb”);
您已将return
语句放在for循环内部,它应该在循环体外部
您的代码也不正确。计数
应从0开始,其他计数
应从1开始
count>=str.length-1
应该是count
(此条件在您的代码中完全不必要,因为other\u count
应该是循环中的终止条件)
及
other\u count>=str.length
应为other\u count
这是您更正的代码
函数为字母(str){
让结果=真;
对于(让计数=0,其他计数=1;其他计数str[other_count]){
结果=错误
}
}
返回结果;
}
console.log(按字母顺序('abc');
代码中有两个问题:
您的返回语句在for循环中。为了避免此类错误,您可以使用类似prettier的代码格式化程序
您的for循环条件无效。请记住,for循环语句的第二部分应该是true
以执行迭代,而false
以停止执行迭代。在这种情况下,您的条件count>=str.length-1,other\u count>=str.length
将首先计算count>=str.length-1
,放弃结果,因为,evaluateother_count>=str.length
立即解析为false
这两件事结合在一起,使函数永远不会返回,javascript运行时将其解释为未定义
希望这能帮助您理解出了什么问题。但正如许多其他人指出的那样,有更好的方法来解决您试图解决的问题。您只需将字符串与其对应的“排序”字符串进行比较即可
let string='abc'.split('').join('');
让sortedString='abc'.split('').sort().join('');
console.log(sortedString==sortedString)
让string2='dbc'.split('').join('');
让sortedString2='dbc'.split('').sort().join('');
log(string2==sortedString2)
如果在循环内部返回,则返回语句应该在循环体外部