2013-08-05 9 views
8

teraz mam:Co jest lepszym sposobem na sprawdzenie, czy ciąg nie jest równy garstce rzeczy?

if (breadCrumbArr[x] !== 'NEBC' && breadCrumbArr[x] !== 'station:|slot:' && breadCrumbArr[x] !== 'slot:' && breadCrumbArr[x] !== 'believe') { 
    // more code 
} 

Ale myślę, że można to zrobić lepiej ...

+2

niektóre odpowiedzi tutaj http://stackoverflow.com/questions/13737091/concise-way-to-compare-against-multiple-values ​​ – Christophe

+1

większość upvotes kiedykolwiek dostał na pytanie Myślałem gonna get downvoted – sherlock

+2

upvotes pracować w tajemnicze sposoby ... – Christophe

Odpowiedz

13

Złóż tablicę i używać indexOf:

['NEBC', 'station:|slot:', 'slot:', 'believe'].indexOf(breadCrumbArr[x]) === -1 
+2

+1 - i ignorować IE 8-. – JimmiTh

+0

Alternatywnie, możesz użyć JQuery '$ .inArray (string_name, array_name), jeśli jest to opcja. – talemyn

+1

@ Jimmi Nie trzeba tego ignorować. Po prostu [włącz polyfill] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf#Compatibility). –

7

Można użyć switch oświadczenie:

switch(inputString){ 
    case "ignoreme1": 
    case "ignoreme2": 
    case "ignoreme3": 
    break; 
    default: 
    //Do your stuff 
    break; 
} 
+3

+1 dla czytelności tego rozwiązania –

+0

@ JonathanM jak o -1 dla braku elastyczności, ponieważ wartości są na stałe? – Christophe

+0

@ JonathanM Zgadzam się, że wartości zakodowane na twardym dysku są złe ... ale to było podejście podjęte przez to pytanie, dlatego tak się do tego odezwałem. – Xynariz

0

Oprócz Ble Odpowiedź RSR jest: jeśli chcesz iść przeglądarkę poprzeczny, można również użyć obiektu zamiast tablicy:

var words = { 
    'NEBC': true, 
    'station:|slot:': true, 
    'slot:': true, 
    'believe': true 
}; 

if (!words[breadCrumbArr[x]]){ 
    //do stuff 
} 

To także szybciej, ale jest to również zdecydowanie brzydsze ponieważ trzeba przypisać wartość (w tym przypadku true) do każdego ciągu, który jest używany jako nazwa właściwości.

Powiązane problemy