Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

189
Vistas
javascript reemplaza las letras de la matriz 1 con el número de la matriz 2 y calcula la suma de estos números

tengo dos matrices

matriz número 1:

 let search = ['ا', 'ب', 'ج', 'د', 'ه','و', 'ز', 'ح', 'ط', 'ي','ك', 'ل', 'م', 'ن', 'س','ع', 'ف', 'ص', 'ق', 'ر','ش', 'ت', 'ث', 'خ', 'ذ','ظ', 'ض', 'غ'];

matriz número 2:

 let replace = ['1', '2', '3', '4', '5','6', '7', '8', '9', '10','20', '30', '40', '50', '60','70', '80', '90', '100', '200','300', '400', '500', '600', '700','800', '900', '1000'];

y esta es una entrada:

 let word = "محمد";

Quiero en javascript buscar las letras de la word variable y reemplazarlas con el equivalente del número en la matriz de replace . La matriz de reemplazo y la matriz de búsqueda tienen la misma cantidad de letras y números.

La salida será:

 م 40 ح 8 م 40 د 4 total = 92 

 let word = "محمد"; let search = ['ا', 'ب', 'ج', 'د', 'ه', 'و', 'ز', 'ح', 'ط', 'ي', 'ك', 'ل', 'م', 'ن', 'س', 'ع', 'ف', 'ص', 'ق', 'ر', 'ش', 'ت', 'ث', 'خ', 'ذ', 'ظ', 'ض', 'غ']; let replace = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100', '200', '300', '400', '500', '600', '700', '800', '900', '1000']; if (word === "") { document.write('the field is empty'); } else { w = word.split("").filter(function(ele) { return ele.replace(search, replace); }).map(function(ele) { return ele + ele; }); } console.log(w);

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Suponiendo que quiso decir que el resultado esperado era 92, puede hacerlo dividiendo la entrada, luego encontrando el índice del elemento en find y agregando el resultado usando reduce buscando el valor de replace

 let search = ['ا', 'ب', 'ج', 'د', 'ه','و', 'ز', 'ح', 'ط', 'ي','ك', 'ل', 'م', 'ن', 'س','ع', 'ف', 'ص', 'ق', 'ر','ش', 'ت', 'ث', 'خ', 'ذ','ظ', 'ض', 'غ']; let replace = ['1', '2', '3', '4', '5','6', '7', '8', '9', '10','20', '30', '40', '50', '60','70', '80', '90', '100', '200','300', '400', '500', '600', '700','800', '900', '1000']; let word = "محمد"; let result = word.split("") .map(x => search.indexOf(x)) .reduce( (acc,i) => acc + parseInt(replace[i],10),0); console.log(result);

Podría mejorar esto almacenando números enteros en su matriz de replace , lo que negaría la necesidad de parseInt

about 4 years ago · Juan Pablo Isaza Denunciar

0

Sugeriría crear un mapa para las dos matrices:

 let word = "محمد"; let search = ['ا', 'ب', 'ج', 'د', 'ه', 'و', 'ز', 'ح', 'ط', 'ي', 'ك', 'ل', 'م', 'ن', 'س', 'ع', 'ف', 'ص', 'ق', 'ر', 'ش', 'ت', 'ث', 'خ', 'ذ', 'ظ', 'ض', 'غ']; let replace = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100', '200', '300', '400', '500', '600', '700', '800', '900', '1000']; let map = Object.fromEntries(search.map((letter, i) => [letter, replace[i]])); let w = Array.from(word, letter => map[letter]).filter(Boolean); console.log(w); // If you want to have a concatenated string: console.log(w.join(",")); // Or a sum: console.log(w.reduce((a, b) => a + +b, 0));

Nota: si su intención es sumar o hacer otros cálculos numéricos, sugeriría que la matriz de replace sea una matriz de números , no de cadenas .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Lógica

  • Dividir la palabra en letras
  • Encuentra el índice de cada palabra de search .
  • Encuentre el valor del índice anterior de la matriz de replace .
  • Añadir esto en un bucle

violín de trabajo

 let word = "محمد"; let search = ['ا', 'ب', 'ج', 'د', 'ه', 'و', 'ز', 'ح', 'ط', 'ي', 'ك', 'ل', 'م', 'ن', 'س', 'ع', 'ف', 'ص', 'ق', 'ر', 'ش', 'ت', 'ث', 'خ', 'ذ', 'ظ', 'ض', 'غ']; let replace = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100', '200', '300', '400', '500', '600', '700', '800', '900', '1000']; let sum = 0; word.split("").forEach(letter => { const index = replace[search.indexOf(letter)]; console.log(`${index} ${letter}`) sum += +index; }); console.log(`total = ${sum}`)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda