Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查字符串中的字符是否唯一_Javascript - Fatal编程技术网

Javascript 检查字符串中的字符是否唯一

Javascript 检查字符串中的字符是否唯一,javascript,Javascript,我实现了检查传入的字符串是否唯一的算法。我觉得我的算法是正确的,但显然在某些情况下,它给出了错误的结果。为什么? 函数是唯一的(str){ 让sortedar=str.split(“”).sort(); for(让sortedar.entries()的[i,char]{ 如果(字符===分拣机[i+1]){ 返回错误 }否则{ 返回真值 } } } console.log(isUnique('heloworld')//truereturn立即终止函数,因此只有for循环的第一次迭代才会运行。相

我实现了检查传入的字符串是否唯一的算法。我觉得我的算法是正确的,但显然在某些情况下,它给出了错误的结果。为什么?

函数是唯一的(str){
让sortedar=str.split(“”).sort();
for(让sortedar.entries()的[i,char]{
如果(字符===分拣机[i+1]){
返回错误
}否则{
返回真值
}
}
}

console.log(isUnique('heloworld')//true
return
立即终止函数,因此只有
for
循环的第一次迭代才会运行。相反,您应该检查是否所有字符都是唯一的(如果不是,则在循环内
返回false
),否则
在循环结束后返回true

函数是唯一的(str){
让sortedar=str.split(“”).sort();
for(让sortedar.entries()的[i,char]{
如果(字符===分拣机[i+1]){
返回错误
}
}
返回真值
}

log(isUnique('heloworld'))
只运行for循环中的第一次迭代(因为您总是执行'return')。相反,您可以使用以下代码

函数是唯一的(str,t={})
{  
return![…str].some(c=>t[c]=t中的c)
}
log('heloworld=>',isUnique('heloworld');

log('helo=>',isUnique('helo')
不确定这是否重要,但对于多单元代码点,您会得到错误的答案,例如,
isUnique('修复方法相对简单:
返回新集合(str).size==Array.from(str).length;
FWIW:
函数noDuplicatedChars(){const chars=new Set();for(让str的c){if(chars.has(c))返回false;chars.add(c);}return true;}
是一个更快的选择。为什么
r
是一个参数?r(我将其重命名为t)是临时哈希映射(以巧妙的方式定义为默认参数)