重複の可能性:
JavaScriptのarray.contains(obj)
何かのようなもの:
if (mystring == "a" || mystring == "b" || mystring =="c")
私はやろうと思っていました:
if (mystring in ("a", "b", "c"))
出来ますか?
重複の可能性:
JavaScriptのarray.contains(obj)
何かのようなもの:
if (mystring == "a" || mystring == "b" || mystring =="c")
私はやろうと思っていました:
if (mystring in ("a", "b", "c"))
出来ますか?
あなたはindexOf()
このように使うことができます
if ( [ 'a', 'b', 'c' ].indexOf( mystring ) > -1 ) { ... }
ES7での編集は少し単純化されています。今日の時点では、Chrome47+とFF43+だけがそれをサポートしているようです。
if ( [ 'a', 'b', 'c' ].includes( mystring ) ) { ... }
indexOf を使用することが最初に頭に浮かぶことですが、古い IE には関数がない.indexOf
ことを覚えておく必要があります (そのため、カスタム コードを使用してシミュレートするか、jQuery.inArrayやunderscore.js indexOf )。
if ([ 'a', 'b', 'c' ].indexOf( mystring ) > -1 ) { ... }
補足: jQuery ソースの inArray 定義を見るとわかるように、独自の indexOf 置換を作成するのは非常に簡単です。私が言ったように、独自のメソッドを作成するか、他のライブラリからコピーして貼り付けるか、すべてのブラウザで indexOf を使用できるようにしたい場合は、それらのライブラリを使用してください。
あなたはそれを古い方法で行うことができます
a = "a";
b = ["a","b","c","d"];
function check(a,b){
i = 0;
for (i=0;i<b.length;i++) {
if (a === b[i]) {
return true;
}
}
return false;
}
alert(check (a,b))
indexOfはECMA-262標準に最近追加されたものであることに注意してください。そのため、すべてのブラウザに存在するとは限りません。これをIEで使用する場合は、バージョン9以降でのみ機能します。
使用できますindexOf
[1,2,3].indexOf(1) will give 0
[1,2,3].indexOf(4) will give -1
したがって、indexOfが-1を返すかどうかを確認できます。
文字列についても同様です。
私はこのようなことを考えます:
if (["a", "b", "c"].indexOf(mystring) != -1) {
// do something
}
if (["a", "b", "c"].indexOf(mystring) != -1) {}
これが最善の方法ですが、一部のブラウザでは機能しない場合があります。
お使いのバージョンは、3文字で最速で、最も読みやすいバージョンです。
もう少し可能な値を使用すると、次のようなものを使用できます。
var c;
if (s.length==1 && (c=s.charAt(0))>='a' && c<='c') {
しかし、それは主に楽しみのためです...
さらに、比較のために文字列拡張を作成できます。
String.prototype.in = function(){
return ~[].slice.call(arguments).indexOf(this.valueOf()) ? true : false;
}
//usage
var myStr = 'a';
myStr.in('a','b','c'); //=> true
'd'.in('a','b','c'); //=> false
古いブラウザーの場合: このMDN ページには、Array.indexOf
何かのようなもの
foreach (str in strings) {
if (mystring.contains(str)) {
...
}
}
動作する可能性があります。