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

197
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 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