Javascript 如何获取两个字符串中相同字符的数量?

Javascript 如何获取两个字符串中相同字符的数量?,javascript,html,node.js,Javascript,Html,Node.js,我试图创建一个函数来返回您提供的两个字符串中的相同字符数 let [string1, string2] = target.split(",").map(p => p.trim()); let [length, char1, char2] = ""; let total = "0"; if (!string1 || !string2) return this.errorReply(`Please provide two words or sentences separated

我试图创建一个函数来返回您提供的两个字符串中的相同字符数

  let [string1, string2] = target.split(",").map(p => p.trim());
  let [length, char1, char2] = "";
  let total = "0";
  if (!string1 || !string2) return this.errorReply(`Please provide two words or sentences separated by a comma.`);
  if (string1.length > string2.length) {
    length = string1.length;
  } else {
    length = string2.length;
  }
  let i;
  for (i = 0; i < length; i++) {
    char1 = string1.charAt(i);
    char2 = string2.charAt(i);
    if (char1 === char2) total++;
  }
  return this.sendReply(`|html|These two strings have <b>${total}</b> characters in common.`);
let[string1,string2]=target.split(“,”).map(p=>p.trim());
让[length,char1,char2]=“”;
让total=“0”;
如果(!string1 | |!string2)返回此.errorReply(`请提供两个用逗号分隔的单词或句子。`);
如果(string1.length>string2.length){
长度=1.5米长;
}否则{
长度=2.5米长;
}
让我;
对于(i=0;i
这是我到目前为止所做的,但是这检查第一个字符是否等于第一个,第二个字符是否等于第二个,等等。 我需要它基本上取第一个字符串的第一个字符,检查它是否与第二个字符串中的任何字符相同,一旦检查完所有字符,它就会移动到第一个字符串的第二个字符上并重复。有没有关于我如何做这件事的帮助?

请看安东尼的

以下答案不考虑重复字符,因此如果有任何重复字符,则会给出错误的输出。


使用迭代第一个字符串,并使用方法检查第二个字符串中是否存在当前字符

函数getIdenticalCount(str1、str2){
让计数=0;
用于(让ch为str1){
if(标准规范2.包括(ch)){
计数++;
}
}
返回计数;
}
log(getIdenticalCount(“apple”、“bat”);
日志(getIdenticalCount(“猫”、“狗”));

log(getIdenticalCount(“苹果”、“菠萝”)您可以非常轻松地完成此操作。首先将其中一个字符串转换为数组,然后仅使用
array.filter
array.includes
确定是否存在公共字符

然后,您可以按自己的意愿返还。下面的示例将返回一个唯一匹配的数组

获取唯一字符

const getCommonChars=(str1,str2)=>{
常量字母=str1.拆分(“”);
return[…新集合(letters.filter=>str2.includes));
};
const result1=getCommonChars('abcdefg','这是一个句子');
console.log('result1',result1)
const result2=getCommonChars('aaaaaa bbbbbb xxxxx','蓝色的鸟可以是exxxxxtra小');
console.log('result2',result2)
const getStringMap=str=>{
常量映射=新映射();
for(str的let char){
if(map.has(char)){
map.set(char,map.get(char)+1);
}否则{
map.set(char,1);
}
}
返回图;
};
常量getCommonCount=(str1,str2)=>{
const map1=getStringMap(str1);
const map2=getStringMap(str2);
让commonCount=0;
for(设map1.keys()的k){
if(map2.has(k)){
commonCount+=Math.min(map1.get(k),map2.get(k));
}
}
返回commonCount;
};

log(getCommonCount('aabcc','aabc')
如果第一个字符串有一个
a
,第二个字符串有5个
a
,这算是1还是5?1,两个字符串之间出现两个相似字符的次数是多少。如果第一个和第二个字符串中有3
a
,则应计为3。如果您不接受我的答案,我将删除它。我的回答没有涉及重复字符的情况。我想出了一个解决方案,但与安东尼的类似。@ZacharyHartin-选择安东尼的答案。这是正确的。我将删除我的。这会为
getIdenticalCount('aabc','abc')
根据操作要求生成不正确的
4
,对@Anthony。我注意到了。正在努力解决这个问题。使用map提出了与您类似的解决方案。