我正在創建一個兒童學習工具,它的形式可以將 4 個字母與一個單詞匹配。
我想計算一個單詞中字符匹配的數量。但它會將重復的字母計算為 2 而不是 1。例如,如果單詞是"loot",并且用戶提交"flop",則匹配的字母是3而不是2,因為它計算了兩次"o" 。我該如何解決?非常感謝
function countMatching(str1, str2) {
var c = 0;
for (var i = 0; i < str1.length; i ) {
if (str2.includes(str1[i]))
c = 1;
}
matchingLetters = c;
}
uj5u.com熱心網友回復:
我制作了@cmgchess 答案的替代版本,它創建了一個仍然猜測的字母的實際解決方案陣列,并在輸入的解決方案中遇到每個字母時洗掉它。
let matchingLetters;
function countMatching(str1, str2) {
var c = 0;
str1Arr = str1.split('');
for (var i = 0; i < str2.length; i ) {
if (str1Arr.includes(str2[i])) {
c = 1;
str1Arr.splice(str1Arr.indexOf(str2[i]), 1);
}
}
matchingLetters = c;
}
countMatching('loot', 'boot')
console.log(matchingLetters)
uj5u.com熱心網友回復:
使用集合的一種可能方法。我將字串轉換為一個集合并回傳一個陣列,所以 if str1is lootthen str1Setwill be ['l','o','t']。其余的都是一樣的
let matchingLetters;
function countMatching(str1, str2) {
var c = 0;
str1Set = [...new Set([...str1])]
str2Set = [...new Set([...str2])]
for (var i = 0; i < str1Set.length; i ) {
if (str2Set.includes(str1Set[i]))
c = 1;
}
matchingLetters = c;
}
countMatching('loot', 'flop')
console.log(matchingLetters)
uj5u.com熱心網友回復:
function countMatching(str1, str2) {
var c = [];
for (var i = 0; i < str1.length; i ) {
if (str2.includes(str1[i]))
if (!c.includes(str1[i])) c.push(str1[i])
}
matchingLetters = c.length;
}
我在標簽上寫,所以可能有錯誤
我所做的是讓 c 成為一個串列,其中包含兩個字串之間共享的每個字符。只有當字符不存在時,新字符才會被推入 c,因此使其成為唯一字串列。
然后您可以獲得串列的長度,甚至可以將串列用于其他目的
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/437570.html
標籤:javascript 功能 数数 匹配
上一篇:單擊時保留滑鼠到父級的偏移
