Necesito cambiar este texto:
var text = `this is an example text. 1coffee , 2 coffee , 1 apple, 2apple , ?banana ,carrot`;usando estas 2 matrices:
var arrOld = ["coffee", "apple", "banana" , "carrot"]; var arrnew = ["laptop", "keyboard", "mouse", "printer"];para obtener un resultado como este:
`this is an example text. 1laptop , 2 laptop , 1 keyboard, 2keyboard , ?mouse ,printer`Estaba intentando algo como:
for (let i = 0; i < arrOld.length; i++) { arrNew[i]; arrOld[i]; text.replace(arrOld[i],arrNew[i]) }pero no funcionó.
De los documentos en .replace ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace ):
"El método replace() devuelve una nueva cadena con algunas o todas las coincidencias de un patrón reemplazadas por un reemplazo".
Esto significa que text.replace() no manipula la variable de texto. Para solucionar esto, simplemente haga lo siguiente en su ciclo:
text = text.replace()
Esto capturará el texto modificado en la variable de texto. Sin hacer esto, está realizando los cambios, pero no los está utilizando (los olvida).
Podrías usar String.prototype. replaceAll() :
var text = "this is an example text. 1coffee , 2 coffee , 1 apple, 2apple , ?banana ,carrot"; var arrOld = ["coffee", "apple", "banana", "carrot"]; var arrnew = ["laptop", "keyboard", "mouse", "printer"] for (let i = 0; i < arrOld.length; i++) { text = text.replaceAll(arrOld[i], arrnew[i]); } console.log(text); Y tal vez también Array.prototype. map() :
var text = "this is an example text. 1coffee , 2 coffee , 1 apple, 2apple , ?banana ,carrot"; var arrOld = ["coffee", "apple", "banana", "carrot"]; var arrnew = ["laptop", "keyboard", "mouse", "printer"]; arrOld.map((old, i) => text = text.replaceAll(old, arrnew[i])); console.log(text);replace devuelve una nueva string en lugar de cambiar la anterior
puedes usar reduce
también agregue RegExp porque replace solo funciona para la primera coincidencia que encontró
const text = `this is an example text. 1coffee , 2 coffee , 1 apple, 2apple , ?banana, another banana ,carrot`; var arrOld = ["coffee", "apple", "banana" , "carrot"]; var arrnew = ["laptop", "keyboard", "mouse", "printer"]; const resultWitoutRegexp = arrOld.reduce((res, textToChange, i) => res.replace(textToChange, arrnew[i]) , text) const result = arrOld.reduce((res, textToChange, i) => res.replace(new RegExp(textToChange, 'g'), arrnew[i]) , text) console.log(resultWitoutRegexp) console.log(result)