web-dev-qa-db-ja.com

変数が含まれている場合

可能性のある複製:
JavaScript:文字列を含む

郵便番号変数があり、郵便番号が変更/入力されたときにJSを使用して別の変数に場所を追加したい。たとえば、ST6を入力した場合、ストークノースを入力する必要があります。

私はどうにかしてifステートメントを実行する必要があります.

if(code contains ST1)
{
    location = stoke central;
}
else if(code contains ST2)
{
    location = stoke north;
} 

等...

これについてどうすればいいですか? 「コード」が値に等しいかどうかはチェックしませんが、値が含まれている場合、これが私の問題だと思います。

27
Sean Hawkins

indexOfが必要な場合があります

_if (code.indexOf("ST1") >= 0) { ... }
else if (code.indexOf("ST2") >= 0) { ... }
_

containsstring変数codeのどこにあるかをチェックします。これには、codeが文字列である必要があります。このソリューションで大文字と小文字を区別しないようにするには、String.toLowerCase()またはString.toUpperCase()のいずれかを使用して大文字と小文字をすべて同じに変更する必要があります。

次のようなswitchステートメントを使用することもできます

_switch (true) {
    case (code.indexOf('ST1') >= 0):
        document.write('code contains "ST1"');
        break;
    case (code.indexOf('ST2') >= 0):
        document.write('code contains "ST2"');        
        break;        
    case (code.indexOf('ST3') >= 0):
        document.write('code contains "ST3"');
        break;        
    }​
_
41
clentfort

正規表現を使用できます:

if (/ST1/i.test(code))
11
SLaks

文字列に別の文字列が含まれているかどうかを確認する最も速い方法は、 indexOf を使用することです。

if (code.indexOf('ST1') !== -1) {
    // string code has "ST1" in it
} else {
    // string code does not have "ST1" in it
}
2
jbabey

if (code.indexOf("ST1")>=0) { location = "stoke central"; }

2
Antti

これらの多くを確認する必要がある場合は、多数のif/elseステートメントを使用する代わりに、マッピングのリストを保存し、それをループするだけです。何かのようなもの:

var CODE_TO_LOCATION = {
  'ST1': 'stoke central',
  'ST2': 'stoke north',
  // ...
};

function getLocation(text) {
  for (var code in CODE_TO_LOCATION) {
    if (text.indexOf(code) != -1) {
      return CODE_TO_LOCATION[code];
    }
  }
  return null;
}

これにより、コード/場所のマッピングを簡単に追加できます。また、複数の場所を処理する場合は、最初に見つかった場所を返すのではなく、関数に場所の配列を作成するだけで済みます。

0
Herms