¿Es posible combinar un map y un filter en una sola expresión de javascript? Por ejemplo, actualmente estoy haciendo lo siguiente para recortar los espacios en blanco y eliminar los resultados vacíos:
const s = "123 hiu 234234" console.log(s .split(/\d+/g) .filter((item, i) => item.trim()) .map((item, i) => item.trim()) ); ¿Hay una forma más compacta de hacerlo? Y, como pregunta de seguimiento, ¿el /g es necesario cuando split o se divide automáticamente cada vez que ocurre?
que...
const s = "123 hiu 234234" console.log( s.match(/[az]+/ig) )Si una sola palabra se encuentra entre los números, creo que una sola expresión regular sería suficiente aquí, solo haga coincidir los espacios que no son en blanco ni los dígitos:
const s = "123 hiu 234234" console.log(s .match(/[^\d ]+/g) );Una forma de hacerlo también sería definir una función que tome dos argumentos a los que pueda llamar y que realicen la tarea. Por ejemplo:
const s = "123 hiu 234234" const Trim = (item, i) => item.trim(); console.log(s.split(/\d+/).filter(Trim).map(Trim));O podría poner la carga en la expresión regular en sí, por ejemplo, solo las letras coincidentes:
s="123 hiu 234234" console.log(s.match(/[a-zA-Z]+/g)); // /[az]+/gi alternately