Javascript 函数对字符串中的重复字符进行计数
我正在尝试编写一个函数,在提供的字符串中查找所有唯一字符 我希望函数以以下格式返回结果:Javascript 函数对字符串中的重复字符进行计数,javascript,object,duplicates,Javascript,Object,Duplicates,我正在尝试编写一个函数,在提供的字符串中查找所有唯一字符 我希望函数以以下格式返回结果: removeDuplicates('th#elex_ash?') -> {unique: 'aehlstx', duplicates: 2} 到目前为止,我提出了以下尝试性解决方案: function removeDuplicates(str){ var unique =""; for (var i=0; i<str.length; i++){ if(uniqu
removeDuplicates('th#elex_ash?') -> {unique: 'aehlstx', duplicates: 2}
到目前为止,我提出了以下尝试性解决方案:
function removeDuplicates(str){
var unique ="";
for (var i=0; i<str.length; i++){
if(unique.indexOf(str[i]) == -1){
unique += str[i];
}
}
unique = unique.replace(/[&\/\\#,_+()$~%.'":*?<>]/g, '');
return unique.split('').sort().join('');
}
console.log(removeDuplicates('aaabbbac'));
console.log(removeDuplicates('a'));
console.log(removeDuplicates('th#elex_ash?'));
函数移除副本(str){
var-unique=“”;
对于(var i=0;i函数移除的副本(str){
var returnObject={
独特的:“,
副本:0
};
对于(变量i=0;i
你们很接近
对象可以像其他任何东西一样以Javascript返回;例如,要返回您要求的格式,只需执行以下操作:
return {
unique: unique,
duplicates: duplicates
}
请注意变量名称与属性键的相同之处?您可以通过简单地编写唯一的
和重复的
,而不是唯一的:唯一的
和重复的:重复的
来使用速记法
您没有保留重复的计数。为此,只需将else
块添加到if(unique.indexOf(str[i])==-1)
条件中,仅当字符确实是重复字符时才应达到该条件,并增加一个计数器-让它命名为duplicates
完整解决方案
函数移除副本(str){
var-unique=“”;
重复变量=0;
对于(变量i=0;i console.log(removeDuplicates(testString));
如果您是为一个可以使用较新javascript功能的环境编写的。这样做会更容易一些,因为它将强制内容之间的唯一性。您还可以将清理后的字符串的长度与唯一性进行比较,以找到重复计数
例如:
函数移除副本(str){
str=str.replace(/[&\/\\\\\\\\\\,+()$~%.“:*?]/g,”)
让unique=Array.from(新集合(str))
.sort((a,b)=>a.localeCompare(b))
.加入(“”)
让重复项=str.length-unique.length
返回{唯一,重复}
}
console.log(移除的副本(“th#elex_ash?”)
谢谢@pseudobbs,这正是我想要解决的问题!你能标记为正确还是向上投票吗?我是SO的新手,正在尝试建立声誉仍然存在问题Return对象应该有一个“uniques”字符串属性。Return对象应该有一个“duplicates”数字属性。“uniques”应该是“aehlstx”,所以请更改字符串p的名称从unique
到uniques
谢谢@PatrickRoberts-我知道这一点,只是没有思考。我会编辑…
return {
unique: unique,
duplicates: duplicates
}