2017-10-25 3 views
1

私はこれを短く単純にしておきます。私はチャットベースのJavaScriptゲームを作っています。私は、アレイと呼ばれるクラスがあります。配列内の文字列をチェックするときに大文字小文字の区別を削除するにはどうすればよいですか?

const classes = ["brute", "medic", "ranger"];

そして第二に、私は、if文を持っている:

if (classes.includes(target)) { 
    this.sendReply('Successful.'); 
} else { 
    this.errorReply('"' + target + '"' + ' is not a valid class.'); 
} 

だから、基本的には、それが何をすべきか、であるかの名前は「ターゲット」(プレイヤーがタイプしているクラスの種類)が、メディカル、ブルート、レンジャーのいずれかであれば、「成功」を返します。

これで動作しますが、大文字と小文字が区別されるという問題があります。たとえば、「medic」と入力すると成功しますが、「Medic」と入力すると「Medic is not valid class」が返されます。

このケースの機密性を削除するにはどうすればよいですか?私は本当に "メディカル"、 "メディック"、 "レンジャー"、 "レンジャー"などを配列に追加したくないです。ありがとう!

答えて

3

チェックする前に、そのように、小文字に文字列を回し:

classes.includes(target.toLowerCase()) 
+0

おかげで、魔法のように働きました。 :) –

0

あなたはケースを無視するiフラグで正規表現を使用することができます前に、小文字に文字列を変換します。

2

文字列をifステートメントに渡す前に、toLowerCaseメソッドを使用してください。

if (classes.includes(target.toLowerCase())) { 
    this.sendReply('Successful.'); 
} else { 
    this.errorReply('"' + target + '"' + ' is not a valid class.'); 
} 

それとも

target = target.toLowerCase(); 
if (classes.includes(target)) { 
    this.sendReply('Successful.'); 
} else { 
    this.errorReply('"' + target + '"' + ' is not a valid class.'); 
} 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase

+0

w3schools、[* MDN *](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase)および[* ECMA-262 *](http://ecma-international.org/ecma-262/8.0/#sec-string.prototype.tolocalelowercase)がはるかに優れています。 – RobG

関連する問題