Coloque seus valores em uma matriz e verifique se o item está na matriz:
if ([1, 2, 3, 4].includes(test.type)) {
// Do something
}
Se um navegador que você suporta não possui o Array#includesmétodo, você pode usar esse polyfill .
Breve explicação do ~atalho til:
Atualização: Como agora temos o includesmétodo, não há mais sentido em usar o ~hack. Basta mantê-lo aqui para pessoas interessadas em saber como ele funciona e / ou o encontraram no código de outras pessoas.
Em vez de verificar se o resultado indexOfé >= 0, existe um pequeno atalho:
if ( ~[1, 2, 3, 4].indexOf(test.type) ) {
// Do something
}
Aqui está o violino: http://jsfiddle.net/HYJvK/
Como é que isso funciona? Se um item for encontrado na matriz, indexOfretornará seu índice. Se o item não foi encontrado, ele retornará -1. Sem entrar em muitos detalhes, ~é um operador NOT bit bit , que retornará 0apenas para -1.
Eu gosto de usar o ~atalho, pois é mais sucinto do que fazer uma comparação no valor de retorno. Eu gostaria que o JavaScript tivesse uma in_arrayfunção que retorne um booleano diretamente (semelhante ao PHP), mas isso é apenas uma ilusão ( atualização: agora funciona).includes . Veja acima). Observe que o jQuery inArray, enquanto compartilha a assinatura do método PHP, na verdade imita a indexOffuncionalidade nativa (que é útil em diferentes casos, se o índice for o que você realmente procura).
Nota importante: O uso do atalho til parece estar envolvido em controvérsias, pois alguns acreditam veementemente que o código não é suficientemente claro e deve ser evitado a todo custo (consulte os comentários nesta resposta). Se você compartilha o sentimento deles, deve se ater ao.indexOf(...) >= 0 solução.
Um pouco mais de explicação:
Inteiros em JavaScript são assinados, o que significa que o bit mais à esquerda é reservado como o bit de sinal; uma bandeira para indicar se o número é positivo ou negativo, com um1 negativo.
Aqui estão alguns exemplos de números positivos no formato binário de 32 bits:
1 : 00000000000000000000000000000001
2 : 00000000000000000000000000000010
3 : 00000000000000000000000000000011
15: 00000000000000000000000000001111
Agora, aqui estão os mesmos números, mas negativos:
-1 : 11111111111111111111111111111111
-2 : 11111111111111111111111111111110
-3 : 11111111111111111111111111111101
-15: 11111111111111111111111111110001
Por que combinações tão estranhas para os números negativos? Simples. Um número negativo é simplesmente o inverso do número positivo + 1; adicionar o número negativo ao número positivo deve sempre gerar0 .
Para entender isso, vamos fazer uma aritmética binária simples.
Aqui está como adicionaríamos -1a +1:
00000000000000000000000000000001 +1
+ 11111111111111111111111111111111 -1
-------------------------------------------
= 00000000000000000000000000000000 0
E aqui está como adicionaríamos -15a +15:
00000000000000000000000000001111 +15
+ 11111111111111111111111111110001 -15
--------------------------------------------
= 00000000000000000000000000000000 0
Como obtemos esses resultados? Fazendo acréscimos regulares, da maneira como fomos ensinados na escola: você começa na coluna mais à direita e soma todas as linhas. Se a soma for maior que o maior número de um dígito (que é decimal 9, mas em binário 1), transportamos o restante para a próxima coluna.
Agora, como você notará, ao adicionar um número negativo ao número positivo, a coluna mais à direita, que não é todos os 0s, sempre terá dois 1s, que, quando somados, resultarão em 2. A representação binária de dois seres 10, carregamos a 1para a próxima coluna e colocamos um 0para o resultado na primeira coluna. Todas as outras colunas à esquerda têm apenas uma linha com a 1, portanto, a 1passagem da coluna anterior será adicionada novamente 2, que será transferida ... Esse processo se repete até chegar à coluna mais à esquerda, onde o 1transportador não tem para onde ir, então transborda e se perde, e ficamos com 0s por toda parte.
Este sistema é chamado de Complemento 2 . Você pode ler mais sobre isso aqui:
Representação do complemento 2 para números inteiros assinados .
Agora que o curso intensivo do complemento 2 terminou, você notará que esse -1é o único número cuja representação binária está 1em todo o lado.
Usando o ~operador NOT bit a bit, todos os bits em um determinado número são invertidos. A única maneira de 0voltar a inverter todos os bits é se começarmos com 1todos os lados.
Então, tudo isso foi um longo modo de dizer que ~nsó voltará 0se nfor -1.
in?