Powiel możliwe:
array.contains(obj) in JavaScriptJak mogę porównać ciąg z kilkoma wartościami?
Coś jak:
if (mystring == "a" || mystring == "b" || mystring =="c")
ja skacze zrobić:
if (mystring in ("a", "b", "c"))
jest to możliwe?
Powiel możliwe:
array.contains(obj) in JavaScriptJak mogę porównać ciąg z kilkoma wartościami?
Coś jak:
if (mystring == "a" || mystring == "b" || mystring =="c")
ja skacze zrobić:
if (mystring in ("a", "b", "c"))
jest to możliwe?
Można użyć indexOf()
jak ten
if ([ 'a', 'b', 'c' ].indexOf(mystring) > -1) { ... }
EDIT Z ES7 przychodzi trochę uproszczenie. Na dzień dzisiejszy tylko Chrome 47+ i 43+ FF wydaje się go wspierać:
if ([ 'a', 'b', 'c' ].includes(mystring)) { ... }
dzięki, wydaje się być najprostszym sposobem. – Diego
Dzięki! Pan SIrko –
Można użyć indexOf
[1,2,3].indexOf(1) will give 0
[1,2,3].indexOf(4) will give -1
Tak, można sprawdzić, czy indexOf zwraca -1.
Podobne do ciągów.
Coś
foreach (str in strings) {
if (mystring.contains(str)) {
...
}
}
może pracować.
zawiera? Nie jest to funkcja –
Korzystanie indexOf jest pierwszą rzeczą, która przychodzi do głowy, jednak trzeba pamiętać, że nie ma .indexOf
funkcja u starszych IES (tak trzeba by użyć niestandardowego kodu to zasymulować, lub po prostu iść prosto do czegoś takiego jak jQuery.inArray lub underscore.js indexOf).
if ([ 'a', 'b', 'c' ].indexOf(mystring) > -1) { ... }
marginesie: jak widać patrząc na definicję inArray w źródle jQuery, pisząc własną wymianę IndexOf jest całkiem proste. Tak jak powiedziałem - napisz własną metodę, skopiuj i wklej ją z innych bibliotek lub po prostu użyj tych bibliotek, jeśli chcesz mieć możliwość korzystania z indexOf w każdej przeglądarce.
dzięki +1 dla IE heads up – Diego
Twoja wersja jest najszybsza dla trzech znaków i najbardziej czytelna.
trochę więcej możliwych wartości, można użyć mniej więcej tak:
var c;
if (s.length==1 && (c=s.charAt(0))>='a' && c<='c') {
Ale to głównie dla zabawy ...
można to zrobić po staremu
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))
nuta że indexOf is a recent addition to the ECMA-262 standard; as such it may not be present in all browsers Jeśli masz zamiar użyć to z IE będzie działać tylko w wersji 9 lub powyżej
dzięki +1 dla IE heads up – Diego
myślę tak:
if (["a", "b", "c"].indexOf(mystring) != -1) {
// do something
}
if (["a", "b", "c"].indexOf(mystring) != -1) {}
byłby to najlepszy sposób, jednak może nie działać na niektórych przeglądarkach.
wprowadzenie dodatkowego: można utworzyć rozszerzenie String dla porównania:
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
dla starszych przeglądarek: ta MDN page zawiera podkładkę dla Array.indexOf
Twój przykład jest źle, jesteś przypisując a nie porównanie. – epascarello
prawda, to był literówka. dzięki – Diego
Nie mówię o tablicach @ DanielA.White, wiem, że mogę dodać ciągi do jednego, ale uważam, że istnieją sposoby, aby to zrobić bez – Diego