函数,用于检查字符串中的所有字符是否相等javascript-家庭作业警告

函数,用于检查字符串中的所有字符是否相等javascript-家庭作业警告,javascript,string,Javascript,String,我找到了解决这个家庭作业问题的方法,但我觉得这不是解决这个问题的最有效的方法。对我应该探索的其他解决方案感兴趣 问题: 编写一个名为allEqual的函数,如果字符串中的每个字符都相同,该函数将返回true 例如: 如果您通过“aaa”,则应返回true 如果您通过“aba”,它将返回false */ 我的代码 var stringAE = "aba"; function allEqual(string) { var stringAENew = ""; for (var i =

我找到了解决这个家庭作业问题的方法,但我觉得这不是解决这个问题的最有效的方法。对我应该探索的其他解决方案感兴趣

问题: 编写一个名为allEqual的函数,如果字符串中的每个字符都相同,该函数将返回true

例如:

如果您通过“aaa”,则应返回true 如果您通过“aba”,它将返回false */

我的代码

var stringAE = "aba";

function allEqual(string) {
    var stringAENew = "";
    for (var i = 0; i < string.length; i++) {
        if (string[0] === string[i]) {
            stringAENew += string[i];
            console.log(stringAENew)
        }

    }
    return stringAENew === string;
}


allEqual(stringAE) 
var stringAE=“aba”;
函数allEqual(字符串){
var stringAENew=“”;
对于(变量i=0;i
也可以使用regex完成

function allEqual(str) {
   return /^(.)\1*$/.test(str);
}

虽然可能没有那么有效。

没有理由构造结果字符串。只需检查所有字符并将其与第一个字符进行比较(正如您所做的那样)。如果发现不同的字符,则结果为
false
。如果您已经检查了所有字符,但没有找到不同的字符,那么答案是
true
(请注意,这包括空字符串和单个字符串的边缘大小写):

函数allEqual(字符串){
对于(变量i=1;i
一旦发现与第一个字符不匹配的字符,可以立即返回
false
。如果通过了整个循环,则返回
true
,因为所有字符都必须匹配

function allEqual(string) {
    for (var i = 1; i < string.length; i++) {
        if (string[i] != string[0]) {
            return false;
        }
    }
    return true;
}
函数allEqual(字符串){
对于(变量i=1;i
您也可以在
i=1
处开始循环,因为第一个字符显然等于其本身,所以无需对其进行测试。

使用简单的解决方案

函数allEqual(输入){
返回input.split(“”).every(char=>char==input[0]);
}
console.log(allEqual('aba'));//假的
console.log(allEqual('aaa'));//真的

console.log(allEqual(“”));//true
此ES6解决方案也适用于除第一个以外的具有Unicode代码点的字符串,即16位范围以外的代码:

函数allEqual(字符串){
return[…string].every((x,a)=>x==a[0]);
}
console.log(allEqual('aaaa'));//真的
console.log(allEqual('aaaba'));//假的
//下一个解决方案在不支持多平面unicode的解决方案中失败:

log(allEqual)(“我参加聚会有点晚了,但由于我需要在项目中这样做,我想出了另一种方法:

函数allEqual(输入){
返回输入==''| |新集合(输入)。大小===1;
}
console.log(['''aaa','11','#####','aba','12','###@%',null,未定义)。映射(项=>({
项目,,
allEqual:allEqual(项目),

})))
否决票是怎么回事?这似乎是个合理的问题。我投票结束这个问题,因为它是在请求感谢@viaz-我非常感谢这里所有帮助过的人,通常每个问题都会有一到两个人,或者他们表现得好像从子宫里出来就知道如何编码。只是阅读他们的评论更滑稽。使用
Array.each
在这里更有意义:
var allEqual=str=>str.split(“”)。each(char=>str[0]==char)
如果字符不匹配,你不必检查完整的字符串。@DavidDomain你是对的。我把它改为使用
some()
。同样的想法。当然,但是使用
every
已经返回
false
,而
一些
返回
true
,因此使用
every
不必对返回值求反。无论如何+1;)好吧,我想我应该将函数重命名为allDiff;)。不,如果名称是allEqual,每个都会读得更好。与这里的其他解决方案不同,此解决方案是最有效的,因为不需要在所有字符上循环,并且对于第一个唯一字符,它打破了循环。
function allEqual(string) {
    for (var i = 1; i < string.length; i++) {
        if (string[i] != string[0]) {
            return false;
        }
    }
    return true;
}