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:
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;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.