Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

163
Vistas
Extraer números de una cadena que no funciona en producción

Tengo un problema al extraer un número de una cadena en reaccionar. La solución que utilicé funciona bien en la máquina local, pero no funciona como se requiere cuando entra en producción. Probé netlify y heroku pero obtuve el mismo resultado.

Obtengo los datos de un archivo de texto que tiene una lista de contenido y más detalles para cada uno de los encabezados. El enlace al archivo de texto está aquí: Enlace al archivo de texto desde donde estoy obteniendo los datos

Por ejemplo:

  1. Conceptos del juego 100. General 101. Las reglas mágicas de oro
  2. Partes de una Tarjeta 200. General 201. Nombre
  3. Tipos de cartas 300. General 301. Artefactos

Por lo tanto, estoy separando los encabezados principales, es decir, 1. Concepto del juego, 2. Partes de una carta, 3. Tipos de cartas y subtítulos, es decir, 100. General, 101. Las reglas mágicas de oro, 200. General, 201. Nombre, 300. General , 301. Artefactos, etc... de ese archivo de texto.

Como mencioné anteriormente, el método que probé funciona bien en la máquina local, pero tan pronto como envío el código a producción, obtengo la lista como estaba antes + la nueva lista que está separada. Intenté esto también:

 parseFloat([heading]) + "." < 5 , parseFloat([heading]) < 5

...pero no obtuve los resultados deseados.

No tengo idea de qué hacer, le agradecería que me ayudara con este problema.

A continuación se muestra App.js:

 import { useState, useEffect } from "react"; import url from "./MagicRules.txt"; import "./App.css"; function App() { let tempdata = []; let dataSplit = []; let headings = []; const [newdata, setNewData] = useState([]); useEffect(() => { temp(); // eslint-disable-next-line }, [0]); const temp = async () => { tempdata = await (await fetch(url, { mode: "no-cors" })).text(); dataSplit = tempdata .split(/^\s+|\s+$/gm) .filter((element) => isNaN(element)); dataSplit = dataSplit.slice(0, dataSplit.lastIndexOf("Glossary")); headings = dataSplit.filter((heading) => parseInt([heading]) + "." < 5); let newHeadings = [...new Set(headings)]; setNewData(newHeadings); }; return ( <div className="App"> {newdata.map((heading, index) => ( <ul key={index}>{heading}</ul> ))} </div> ); } export default App;

esto esta en produccion

Esto es lo que obtengo en la máquina local, es decir, localhost: 3000 y este es el resultado que quiero

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Gracias a todos por la ayuda y las sugerencias. Había un salto de línea ('\n') en esos índices como se puede ver en la primera imagen. Lo descubrí usando console.log(headings) en el código y desplegándolo en Netlify/Heroku y después de visitar el enlace, lo encontré en la consola del navegador.

El problema estaba en la expresión regular utilizada en la función de división. Hice un pequeño cambio de 's+' a 's*' que resolvió el problema. es decir, split(/^\s+|\s*$/gm) en lugar de split(/^\s+|\s+$/gm).

Espero que esto sea útil para otros.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda