Estoy tratando de reemplazar los valores de cadena con valores de matriz en javascript uniendo los valores de cadena con valores de matriz. por ejemplo:
mi cadena es
var str = 'a*b-ab'; var arrayElement = [['a', 'class 1'], ['b', 'class 12'],['ab', 'class 15'],['ac', 'class 2']]Ahora, string(str) tiene a, b, ab y array tiene a, b, ab, ac. necesitamos unir valores de cadena como a, b y ab y obtener su descripción de la matriz. y mi salida tiene que ser
class 1 * class 12 - class 15¿Hay alguna manera de hacerlo en javascript? por favor ayuda.
Primero puede convertir su elemento de arrayElement en un mapa para que pueda encontrar fácilmente los valores de clase de sus cadenas a, b, ab, etc. Luego puede usar .replace() con la expresión regular \w+ para hacer coincidir elementos de palabras (es decir: los no operadores) en su cadena. Luego puede usar una función como el segundo argumento de .replace() para tomar las letras coincidentes y usar el Mapa que creamos para tomar su clase asociada:
const str = 'a*b-ab'; const arrayElement = [['a', 'class 1'], ['b', 'class 12'],['ab', 'class 15'],['ac', 'class 2']]; const lookup = new Map(arrayElement); const res = str.replace(/\w+/g, m => ` ${lookup.get(m)} `).trim(); console.log(res);Si necesita una mejor compatibilidad con el navegador, esto se puede reescribir en ES5 así, que es compatible con muchos navegadores, incluido IE11:
var str = 'a*b-ab'; var arrayElement = [['a', 'class 1'], ['b', 'class 12'],['ab', 'class 15'],['ac', 'class 2']]; var lookup = arrayElement.reduce(function(acc, arr) { acc[arr[0]] = arr[1]; return acc; }, {}); var res = str.replace(/\w+/g, function(m) { return " " + lookup[m] + " "; }).trim(); console.log(res);