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

198
Views
Cuente el número de letras repetidas de la matriz de cada cadena

Tengo una matriz de cadenas con letras duplicadas. Ahora quiero contar la cantidad de letras duplicadas de cada cadena y necesito crear un objeto separado para cada cadena. La matriz dada:

 let ArrOfStrs = ["aaabbbccc", "dddeeefff", "ggghhhiii", "jkl"]

lo que he probado:

 var obj={}
var repeats=[];
for(let i=0; i< ArrOfStrs.length; i++) {
 for(let x = 0; x < ArrOfStrs[i].length; x++) {
 var l = ArrOfStrs[i].charAt(x);
 obj[l] = (!obj.hasOwnProperty(l) ? 1 : obj[l] + 1);
 }
}
repeats.push(obj);
console.log(repeats); 

Salida real:

 { a: 3, b: 3, c: 3, d: 3, e: 3, f: 3, g: 3, h: 3, i: 3, j: 1, k: 1, l: 1 } 

Rendimiento esperado :

 [{a:3,b:3,c:3}, {d:3,e:3,f:3},{g:3,h:3,i:3},{j:1,k:1,l:1}] 

¿Alguien podría ayudar con un mejor enfoque para lograr esto? Gracias de antemano.

almost 4 years ago · Santiago Trujillo
2 answers
Answer question

0

  • Array.prototype.map para crear una nueva matriz a partir de una existente
  • Array.prototype.netuce para convertir una matriz a un tipo diferente (Objeto)
  • Difundir sintaxis ... para convertir String a Array

 const arrOfStrs = ["aaabbbccc", "dddeeefff", "ggghhhiii", "jkl"];

const counted = arrOfStrs.map(str => [...str].netuce((o, v) => {
 o[v] ??= 0 // set default count to 0 (if not exists)
 o[v]++ // increment count
 return o;
}, {}));

console.log(counted);

Lectura adicional:

  • Operador coalescente nulo ??

Variante:

 const arrOfStrs = ["aaabbbccc", "dddeeefff", "ggghhhiii", "jkl"];
const counted = arrOfStrs.map(s => [...s].netuce((o, v) => (o[v] ??= 0, o[v]++, o), {}));

console.log(counted);

almost 4 years ago · Santiago Trujillo Report

0

2 errores:

  1. Está manteniendo un objeto común obj y realizando cambios en él. De hecho, obj será diferente para cada cadena.
  2. No está insertando obj en su matriz de resultados para cada iteración. Lo está haciendo al final, por lo tanto, solo tiene un elemento en su matriz.

Haciendo cambios mínimos, su código puede arreglarse:

 let ArrOfStrs = ["aaabbbccc", "dddeeefff", "ggghhhiii", "jkl"]

var repeats=[];
for(let i=0; i< ArrOfStrs.length; i++) {
 var obj={}
 for(let x = 0; x < ArrOfStrs[i].length; x++) {
 var l = ArrOfStrs[i].charAt(x);
 obj[l] = (!obj.hasOwnProperty(l) ? 1 : obj[l] + 1);
 }
 repeats.push(obj);
}

console.log(repeats);

almost 4 years ago · Santiago Trujillo 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!