Si la cadena comienza con foo.com o bar.me reemplácela con baz.co ¿Es esta la forma más eficiente/concisa?
string1.replace('foo.com', 'baz.co').replace('bar.me', 'baz.co') Podríamos tener una matriz de cadenas: ['foo.com', 'bar.me']
Puedes usar una expresión regular :
string1.replace(/foo\.com|bar\.me/, 'baz.co')"Comienza con" requeriría anclar la expresión:
string1.replace(/^(foo\.com|bar\.me)/, 'baz.co')Entendí tu pregunta. Le gustaría reemplazar un par de cadenas en una matriz con "baz.co". Tienes dos matrices. 1) matriz con varias cadenas. 2) matriz con cadena que reemplazará (aguja). Y una cadena que usas para el reemplazo.
const arr = ['foo.com', 'bar.me', 'not.re']; const nee = ['foo.com', 'bar.me'] const rep = 'baz.co' const n = []; arr.forEach(i => { n.push( nee.includes(i) ? rep : i); }) console.log(n)Sugeriría la solución de Felix Kling .
Una forma más generalizada de resolver tales operaciones "encadenadas" (en caso de que no se puedan expresar con RegExp) sería usar la funcionalidad Array.reduce :
let string1 = 'bar.me.test' string1 = ['foo.com', 'bar.me'].reduce((previousValue, valueFromArray) => { return previousValue.replace(valueFromArray, 'baz.co') }, string1); console.log(string1)