Coloque sus valores en una matriz y verifique si su artículo está en la matriz:
if ([1, 2, 3, 4].includes(test.type)) {
// Do something
}
Si un navegador que admite no tiene el Array#includesmétodo, puede usar este polyfill .
Breve explicación del ~acceso directo tilde:
Actualización: dado que ahora tenemos el includesmétodo, ya no tiene sentido usar el ~hack. Simplemente mantener esto aquí para las personas que están interesadas en saber cómo funciona y / o lo han encontrado en el código de otros.
En lugar de verificar si el resultado indexOfes >= 0, hay un pequeño atajo:
if ( ~[1, 2, 3, 4].indexOf(test.type) ) {
// Do something
}
Aquí está el violín: http://jsfiddle.net/HYJvK/
¿Como funciona esto? Si se encuentra un elemento en la matriz, indexOfdevuelve su índice. Si no se encontró el artículo, volverá -1. Sin entrar en demasiados detalles, ~es un operador NOT bit a bit , que regresará 0solo por -1.
Me gusta usar el ~acceso directo, ya que es más sucinto que hacer una comparación del valor de retorno. Desearía que JavaScript tuviera una in_arrayfunción que devuelva un booleano directamente (similar a PHP), pero eso es solo una ilusión ( Actualización: ahora lo hace. Se llama includes. Ver arriba). Tenga en cuenta que jQuery inArray, aunque comparte la firma del método PHP, en realidad imita la indexOffuncionalidad nativa (que es útil en diferentes casos, si el índice es lo que realmente busca).
Nota importante: el uso del acceso directo tilde parece estar envuelto en controversia, ya que algunos creen con vehemencia que el código no es lo suficientemente claro y debe evitarse a toda costa (vea los comentarios sobre esta respuesta). Si comparte su sentimiento, debe apegarse a la .indexOf(...) >= 0solución.
Una pequeña explicación más larga:
Los enteros en JavaScript están firmados, lo que significa que el bit más a la izquierda está reservado como el bit de signo; una bandera para indicar si el número es positivo o negativo, con un 1ser negativo.
Aquí hay algunos números positivos de muestra en formato binario de 32 bits:
1 : 00000000000000000000000000000001
2 : 00000000000000000000000000000010
3 : 00000000000000000000000000000011
15: 00000000000000000000000000001111
Ahora aquí están esos mismos números, pero negativos:
-1 : 11111111111111111111111111111111
-2 : 11111111111111111111111111111110
-3 : 11111111111111111111111111111101
-15: 11111111111111111111111111110001
¿Por qué combinaciones tan extrañas para los números negativos? Sencillo. Un número negativo es simplemente el inverso del número positivo + 1; agregar el número negativo al número positivo siempre debería rendir 0.
Para entender esto, hagamos algo de aritmética binaria simple.
Aquí es cómo agregaríamos -1a +1:
00000000000000000000000000000001 +1
+ 11111111111111111111111111111111 -1
-------------------------------------------
= 00000000000000000000000000000000 0
Y así es como agregaríamos -15a +15:
00000000000000000000000000001111 +15
+ 11111111111111111111111111110001 -15
--------------------------------------------
= 00000000000000000000000000000000 0
¿Cómo obtenemos esos resultados? Al sumar regularmente, la forma en que nos enseñaron en la escuela: comienzas en la columna de la derecha y sumas todas las filas. Si la suma es mayor que el mayor número de un solo dígito (que en decimal es9 , pero en binario es 1), llevamos el resto a la siguiente columna.
Ahora, como notará, al agregar un número negativo a su número positivo, la columna más a la derecha que no es todo 0s siempre tendrá dos 1s, que al sumarse resultarán 2. La representación binaria de dos seres 10, que lleva la 1a la siguiente columna, y puso una 0para el resultado de la primera columna. Todas las demás columnas a la izquierda tienen solo una fila con a 1, por lo que el contenido 1de la columna anterior volverá a sumarse 2, lo que luego se transferirá ... Este proceso se repite hasta llegar a la columna más a la izquierda, donde el1 ser transportado no tiene a dónde ir, por lo que se desborda y se pierde, y nos queda con 0s por todas partes.
Este sistema se llama Complemento de 2 . Puedes leer más sobre esto aquí:
Representación del complemento 2 para enteros firmados .
Ahora que el curso intensivo en el complemento de 2 ha terminado, notará que -1es el único número cuya representación binaria está 1en todas partes.
Utilizando el ~bit a bit NO operador, todos los bits de un número dado se invierten. La única forma de 0volver de invertir todos los bits es si comenzamos con 1todo.
Entonces, todo esto fue una forma larga de decir que ~nsolo volverá 0si nes así -1.
in?