Quero converter a seguinte string '14 2'
em uma matriz de dois inteiros. Como eu posso fazer isso ?
javascript
TJ
fonte
fonte
for(var i=myArray.length; i--;) myArray[i] = myArray[i]|0;
usando a conversão bit a bit e um loop mais curtomyArray.forEach(function(x,y,z){ z[y]=x|0 })
.min.js
e.js
se quiser expor seu código ... lembre-se de que a minificação não é para obscuridade (ou não deveria ser, já que é inútil para isso), é para reduzir a sobrecarga de HTTP - um carregamento de página mais rápido para seus usuários.Um rápido para navegadores modernos:
fonte
ASSIM ... tópico mais antigo, eu sei, mas ...
EDITAR
@RoccoMusolino teve uma boa pegada; aqui está uma alternativa:
TL; DR:
ERRADO :
"5 6 note this foo".split(" ").map(Number).filter(Boolean); // [5, 6]
Há uma falha sutil nas soluções mais elegantes listadas aqui, especificamente @amillara e @Marcus 'as respostas de outra forma lindas.
O problema ocorre quando um elemento da matriz de string não é semelhante a um inteiro, talvez em um caso sem validação em uma entrada. Para um exemplo artificial ...
O problema:
Já que você obviamente quer um array PURE int, isso é um problema. Honestamente , eu não entendi isso até que copiei e colei o código do SO em meu script ...: /
A correção (ligeiramente menos baller) :
Então, agora, mesmo quando você tem uma string int crap, sua saída é um array inteiro puro. Os outros são realmente sensuais na maioria dos casos, mas eu queria oferecer o meu na verdade vagaroso . Ainda assim, para meu crédito ...
Espero que economize o tempo de alguém!
fonte
.filter(Boolean)
por.filter( (x) => !Number.isNaN(x))
fonte
parseInt()
..map
um JS em qualquer navegador sem bibliotecas adicionais.Uma alternativa à resposta de Tushar Gupta seria:
No código de golfe, você salva 1 caractere. Aqui, o "+" é o operador "mais unário", funciona como parseInt.
fonte
Primeiro divida a string em espaços:
Em seguida, converta a matriz de resultados de strings em inteiros:
fonte
parseInt()
, caso contrário, você pode obter octais lá.0
, ou0x
deve estar bem.O ponto contra
parseInt
-abordagem:Não há necessidade de usar lambdas e / ou dar
radix
parâmetro paraparseInt
, apenas useparseFloat
ou noNumber
lugar.Razões:
Está funcionando:
É mais curto.
É um pouco mais rápido e aproveita o cache, quando
parseInt
-approach - não :Aviso: No Firefox
parseInt
funciona cerca de 4 vezes mais rápido, mas ainda mais lento do que outros. No total:+e
<Number
<parseFloat
<parseInt
fonte
Só por diversão, pensei em lançar uma
forEach(f())
solução também.fonte
fonte
Melhor solução de uma linha:
fonte
nos a função de divisão :
fonte