gpt4 book ai didi

javascript - 如何检查字符串是否包含数组中的某个元素,而不包含其他元素

转载 作者:行者123 更新时间:2023-12-02 14:25:13 26 4
gpt4 key购买 nike

我正在用 JavaScript 制作一些化学游戏作为 Telegram 机器人,你有一个库存,并且需要混合正确的化学品。我将库存包含在一个数组中,为了防止通过简单地粘贴库存来暴力破解您的级别,我需要检查用户输入是否仅包含所需的化学品,而不是数组中的任何其他化学品数组。

例如:

users[id].inventory = ["Beaker", "Water", "Baking soda", "Heating plate", "Hydrochloric acid"];

if (users[id].level === 1 &&
msg.text.toLowerCase().indexOf('baking soda') !== -1 &&
msg.text.toLowerCase().indexOf('hydrochloric acid') !== -1 &&
msg.text.toLowerCase().indexOf('beaker') === -1 &&
msg.text.toLowerCase().indexOf('water') === -1 &&
msg.text.toLowerCase().indexOf('heating plate') === -1) {

msg.answer("You mix some baking soda with hydrochloric acid.\nSome fun fizzing happens and you produce useless CO2 gas.");
}

在更高的级别,您将获得更大的库存,这将导致非常大的 if 语句。这看起来很糟糕,必须有更好的方法。是否有诸如专有 indexOf() 之类的东西或任何其他解决方案?例如,我已经检查了 arr.filter() 但我找不到实现此目的的好方法。

最佳答案

手动检查每种成分并不是一个好主意,正如您所指出的,如果配方的需求很长并且库存也很长,这会变得非常乏味。

我建议创建一个函数rightIngredients,它接受两个数组:要求和使用的项目。

考虑到只应使用配方中的项目,我在函数内要做的第一件事是检查两个数组的长度。如果它们不同,那么它应该返回 false 并且不需要检查其他任何内容。

如果数组的长度相同,那么我们检查所使用的每个项目,看看它们是否符合要求。如果其中之一不是,那么我们也返回 false。

requirements = ["baking soda", "hydrochloric acid"];

function rightIngredients(req, uses) {
if (uses.length != req.length) {
console.log(uses.join(', ')+' are not even the right amount of ingredients');
missing = true;
} else {
var i = 0;
var missing = false;
while (i<uses.length && !missing) {
if (req.indexOf(uses[i].toLowerCase())===-1) missing = true;
++i;
}
if (missing) console.log(uses.join(', ')+' are not the right ingredients');
else console.log(uses.join(', ')+' are the right ingredients');
}
return !missing;
}
rightIngredients(requirements, ["Beaker", "Baking Soda", "Hydrochloric Acid"]);
// Beaker, Baking Soda, Hydrochloric Acid are not even the right amount of ingredients
rightIngredients(requirements, ["Beaker", "Baking Soda"]);
// Beaker, Baking Soda are not the right ingredients
rightIngredients(requirements, ["Baking Soda", "Hydrochloric Acid"]);
// Baking Soda, Hydrochloric Acid are the right ingredients

关于javascript - 如何检查字符串是否包含数组中的某个元素,而不包含其他元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38326015/

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