Quiero convertir la siguiente cadena '14 2'
en una matriz de dos enteros. Cómo puedo hacerlo ?
javascript
TJ
fuente
fuente
for(var i=myArray.length; i--;) myArray[i] = myArray[i]|0;
uso de conversión bit a bit y bucle más cortomyArray.forEach(function(x,y,z){ z[y]=x|0 })
.min.js
y.js
si desea exponer su código ... recuerde que la minificación no es para la oscuridad (o no debería serlo, ya que es inútil para eso), es para reducir la sobrecarga de HTTP: una carga de página más rápida para sus usuarios.Uno rápido para navegadores modernos:
fuente
SO ... hilo más antiguo, lo sé, pero ...
EDITAR
@RoccoMusolino tuvo una buena captura; aquí hay una alternativa:
TL; DR:
INCORRECTO :
"5 6 note this foo".split(" ").map(Number).filter(Boolean); // [5, 6]
Hay una falla sutil en las soluciones más elegantes que se enumeran aquí, específicamente en las hermosas respuestas de @amillara y @Marcus.
El problema ocurre cuando un elemento de la matriz de cadenas no es como un número entero, quizás en un caso sin validación en una entrada. Para un ejemplo artificial ...
El problema:
Dado que obviamente desea una matriz int PURE, eso es un problema. Honestamente , no entendí esto hasta que copié y pegué el código SO en mi script ...: /
La solución (un poco menos baller) :
Entonces, ahora incluso cuando tiene una cadena int de mierda, su salida es una matriz entera pura. Los otros son realmente sexys en la mayoría de los casos, pero en realidad quería ofrecer mi mayor divagación . Sin embargo, todavía es una frase de una sola línea, para mi crédito ...
¡Espero que le ahorre tiempo a alguien!
fuente
.filter(Boolean)
con.filter( (x) => !Number.isNaN(x))
fuente
parseInt()
..map
y similares en JS en cualquier navegador sin bibliotecas adicionales.Una alternativa a la respuesta de Tushar Gupta sería:
En código golf se guarda 1 carácter. Aquí el "+" es el operador "unario más", funciona como parseInt.
fuente
Primero divida la cadena en espacios:
Luego, convierta la matriz resultante de cadenas en números enteros:
fuente
parseInt()
, de lo contrario, puede obtener octals allí.0
, o0x
debería estar bien.El punto en contra del
parseInt
enfoque:No es necesario usar lambdas y / o dar un
radix
parámetro aparseInt
, solo useparseFloat
o en suNumber
lugar.Razones:
Esta funcionando:
Es mas corto.
Es un poquito más rápido y aprovecha la caché, cuando
parseInt
-enfoque- no :Aviso: en Firefox
parseInt
funciona aproximadamente 4 veces más rápido, pero aún más lento que otros. En total:+e
<Number
<parseFloat
<parseInt
fuente
Solo por diversión, pensé en lanzar una
forEach(f())
solución también.fuente
fuente
Mejor solución de una línea:
fuente
usamos la función de división :
fuente