私は、化学品のゲームをJavaScriptでテレグラムのボットとして作成しています。在庫には配列が含まれていますが、インベントリを貼り付けるだけで、レベルへのブルートフォースを防ぐためには、ユーザー入力に必要な化学物質が排他的に含まれているかどうかを確認する必要があります。アレイ。例えば文字列に配列の特定の要素が含まれているかどうかを確認する方法
:
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文にこの道をリードするhigerレベルで。これは悪く見え、よりよい方法が必要です。排他的なindexOf()
または他のソリューションのようなものはありますか?私は例えばarr.filter()
をチェックアウトしましたが、これを実装する良い方法を見つけることができません。
あなたは、配列を反復するループを使用してみましたか? – nnnnnn