Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

181
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!