Tengo una serie de direcciones URL como esta:
[ 'https://subdomain1.example.com/foo-bar/', 'https://subdomain2.example.com/foo-bar', 'https://subdomain2.example.com/foo-bar', 'https://subdomain2.example.com/foo-bar', 'https://subdomain2.example.com/foo-bar' ] Necesito buscar dentro para hacer coincidir la entrada del usuario con la parte del subdomain de la URL, estoy intentando con esta línea de código para lograrlo:
const searched = urlList.find( el => el.includes( match[1].toLocaleLowerCase() ) ) console.log(searched.length) Si se encuentra la entrada, necesito reemplazar la segunda parte de la URL, en mi caso /foo-bar con /foo-baz o /foo-baz-bar para obtener una respuesta para el usuario que sea algo así como https://subdomain2.example.com/foo-bar-baz/ .
Por el momento no estoy seguro de cómo proceder, ¿hay alguna función en JS que pueda ayudarme?
Simplemente puede lograr eso con una sola línea de código.
const urlList = [ 'https://subdomain1.example.com/foo-bar/', 'https://subdomain2.example.com/foo-bar', 'https://subdomain2.example.com/foo-bar', 'https://subdomain2.example.com/foo-bar', 'https://subdomain2.example.com/foo-bar' ]; const findSubString = 'foo-bar'; const replaceSubString = 'foo-baz'; const res = urlList.map((url) => url.replace(findSubString, replaceSubString)); console.log(res); function foo() { let a = ['https://subdomain1.example.com/foo-bar/', 'https://subdomain2.example.com/foo-bar', 'https://subdomain2.example.com/foo-bar', 'https://subdomain2.example.com/foo-bar', 'https://subdomain3.example.com/foo-bar']; let seed = 'subdomain2.example.com'; let repl = 'whatever'; for (let i = 0; i < a.length; i++) { let e = a[i]; let r = e.match(/\/\/([^\/]+)/); if (r[1] == seed) { a[i] = e.replace(/(?<=\.\w{3}\/)[a-zA-Z0-9_-]+/, repl); } } //document.getElementById("jj").value = JSON.stringify(a); console.log(JSON.stringify(a)); }Encontré una solución simple y resolví el problema. Aquí está mi fragmento para todos los que en el futuro necesiten lo mismo.
const searched = urlList.find( el => el.includes( match[1].toLocaleLowerCase() ) ) const url = new URL(searched) const host = url.host const responseURL = `https://www.${host}${responsePath}`