喜歡的東西:
if (mystring == "a" || mystring == "b" || mystring =="c")
我跳做的事:
if (mystring in ("a", "b", "c"))
這可能嗎?
喜歡的東西:
if (mystring == "a" || mystring == "b" || mystring =="c")
我跳做的事:
if (mystring in ("a", "b", "c"))
這可能嗎?
您可以使用indexOf
[1,2,3].indexOf(1) will give 0
[1,2,3].indexOf(4) will give -1
所以,你可以檢查的indexOf返回-1。
字符串類似。
喜歡的東西
foreach (str in strings) {
if (mystring.contains(str)) {
...
}
}
可能工作。
包含?不是一個功能 –
使用的indexOf是想到的第一件事情,但是你要記住,這有年長的IE(所以你必須使用你的自定義代碼來模擬它,或者只是去直沒有.indexOf
功能到像jQuery.inArray或underscore.js indexOf)。
if ([ 'a', 'b', 'c' ].indexOf(mystring) > -1) { ... }
旁註:你可以通過查看jQuery的源inArray定義,編寫自己的indexOf更換看到的是很容易的。就像我說的那樣 - 編寫自己的方法,從其他庫中複製粘貼,或者如果您希望能夠在每個瀏覽器中使用indexOf,就使用這些庫。
感謝+1爲IE提高 – Diego
您的版本是三個字符中速度最快,最具可讀性的版本。
有了多一點的可能值,你可以使用這樣的事情:
var c;
if (s.length==1 && (c=s.charAt(0))>='a' && c<='c') {
但是,這主要是爲了好玩...
你可以做舊的方式
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 is a recent addition to the ECMA-262 standard; as such it may not be present in all browsers如果你要使用IE瀏覽器使用它只會9或以上版本
感謝IE瀏覽器的提升 – Diego
我認爲像這樣的工作:
if (["a", "b", "c"].indexOf(mystring) != -1) {
// do something
}
if (["a", "b", "c"].indexOf(mystring) != -1) {}
這將是最好的方式,但它可能無法在某些瀏覽器。
Addtionally:您可以創建用於比較的String擴展:
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 page包含Array.indexOf
墊片你舉的例子是錯誤的,你是分配和不進行比較。 – epascarello
是真的,這是一個錯字。謝謝 – Diego
我不是在談論數組@ DanielA.White,我知道我可以添加字符串到一個,但我相信有沒有方法來做到這一點,沒有 – Diego