gpt4 book ai didi

javascript - 如何检查一个单词是否由不同数组中的字母组成

转载 作者:行者123 更新时间:2023-11-29 10:26:22 25 4
gpt4 key购买 nike

我正在用 Vue 编写文字游戏。

您从一串随机字符开始,您必须输入一个可以由该字符串组成的单词,例如对于“ABEOHSTD”,用户可以输入“BASE”以获得 4 分。

我在 .txt 文件中有一个外部单词列表(我也无法工作,但这是一个单独的问题)我需要验证这些单词,但我无法验证这些单词是否可以制作来自给定的随机字符串。

我不知道如何确保每个字母只能使用它在数组中出现的次数,甚至存储分数,但我只想让这第一部分正常工作。

我尝试将输入的单词和随机字符串拆分为每个字符的数组,遍历数组并检查用户输入的字符串中的每个字符是否包含在随机字符串数组中。

      splitUserCurrentWord = this.userAttemptedWord.split("");
for (var i = 0; i <= splitUserCurrentWord.length; i++) {
if (this.randomStringForGame.split("").includes(splitUserCurrentWord[i])) {
return true;
//i++
}
else {
return false;
}
}
}

目前,如果用户输入的单词中的所有字母都出现在随机字符串数组中,我希望解析为 true,但它似乎只根据数组的第一个字母解析为 true 或 false,这不是很好,因为只要第一个字母在随机字符串数组中,它就会注册为正确/正确。

到目前为止整个事情的jsfiddle: https://jsfiddle.net/sk4f9d8w/

最佳答案

您的 return 语句在第一次迭代后退出循环。

一种方法是使用 Array.every 来验证所有字母,并使用 String.includes 检查字母是否是接受的字符串的一部分

const randomString = "ABEOHSTD";

console.log(isWordValid(randomString, "BASE"));
console.log(isWordValid(randomString, "BASEU"));

function isWordValid(validLetters, attemtedWord) {
const attemptedWordSplitted = attemtedWord.split("");
return attemptedWordSplitted.every(attemptedLetter => validLetters.includes(attemptedLetter));
}

如果您不允许多次重复使用同一个字母,则需要另一种方法,即从可接受的字母列表中删除使用过的字母

const randomString = "ABEOHSTD";

console.log(isWordValid(randomString, "BASE"));
console.log(isWordValid(randomString, "BAASE"));
console.log(isWordValid(randomString, "BASEU"));

function isWordValid(validLetters, attemptedWord) {
const validLettersSplitted = validLetters.split("");
const attemptedWordSplitted = attemptedWord.split("");
return attemptedWordSplitted.every(attemptedLetter => {
const letterIndex = validLettersSplitted.indexOf(attemptedLetter);
if(letterIndex > -1){
validLettersSplitted.splice(letterIndex, 1);
return true;
} else {
return false
}
});
}

关于javascript - 如何检查一个单词是否由不同数组中的字母组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58323445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com