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

183
Views
Agrupe la matriz de cadenas por primera letra

Tengo este reto, que consiste en:

  • Escribiendo una función que toma una matriz de cadenas como argumento
  • Luego, agrupe las cadenas en la matriz por su primera letra
  • Devuelve un objeto que contiene propiedades con claves que representan las primeras letras

Por ejemplo:

debería volver

 groupIt(['hola', 'adios', 'chao', 'hemos', 'accion']) // Should return { a: [ "adios", "accion" ] c: [ "chao" ] h: [ "hola", "hemos" ] ​}

Esta es mi respuesta, devuelve el objeto esperado, pero no pasa la prueba en la página:

 function groupIt(arr) { let groups = {} let firstChar = arr.map(el=>el[0]) let firstCharFilter = firstChar.filter((el,id)=>{ return firstChar.indexOf(el)===id }) firstCharFilter.forEach(el=>{ groups[el]=[] }) firstCharFilter.forEach(char=>{ for(let word of arr) { if(word[0]==char) { groups[char].push(word) } } }) return groups } groupIt(['hola', 'adios', 'chao', 'hemos', 'accion'])

¿Dónde estoy fallando?

Aquí la prueba: https://www.jschallenger.com/javascript-arrays/javascript-group-array-strings-first-letter

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Ejecuté su código, así como los ejemplos de prueba proporcionados por JS Challenger. Me di cuenta de que eran sensibles a mayúsculas y minúsculas. Entonces, aunque su código funciona bien, si las palabras comienzan con mayúsculas, no pasará ciertos casos. Se adjunta mi versión que pasó todos los ejemplos de prueba.

Si agrega: .toLowerCase al firstChar, creo que también pasará. Feliz codificación ;)

PD: si la imagen a continuación no funciona, avíseme, estoy aprendiendo cómo contribuir a Stack Exchange, gracias.

 const groupIt = (array) => { let resultObj = {}; for (let i =0; i < array.length; i++) { let currentWord = array[i]; let firstChar = currentWord[0].toLowerCase(); let innerArr = []; if (resultObj[firstChar] === undefined) { innerArr.push(currentWord); resultObj[firstChar] = innerArr }else { resultObj[firstChar].push(currentWord) } } return resultObj } console.log(groupIt(['hola', 'adios', 'chao', 'hemos', 'accion'])) console.log(groupIt(['Alf', 'Alice', 'Ben'])) // { a: ['Alf', 'Alice'], b: ['Ben']} console.log(groupIt(['Ant', 'Bear', 'Bird'])) // { a: ['Ant'], b: ['Bear', 'Bird']} console.log(groupIt(['Berlin', 'Paris', 'Prague'])) // { b: ['Berlin'], p: ['Paris', 'Prague']}

about 4 years ago · Juan Pablo Isaza Report

0

Al sitio no le gusta .reduce , pero aquí hay una forma:

 const r1 = groupIt(['hola', 'adios', 'chao', 'hemos', 'accion']) console.log(r1) // Should return // { // a: ["adios", "accion"] // c: ["chao"] // h: ["hola", "hemos"] // } function groupIt(arr) { return arr.reduce((store, word) => { const letter = word.charAt(0) const keyStore = ( store[letter] || // Does it exist in the object? (store[letter] = []) // If not, create it as an empty array ); keyStore.push(word) return store }, {}) }

about 4 years ago · Juan Pablo Isaza Report

0

Sensible a mayúsculas y minúsculas es la razón. Introduzca un toLowerCase después de charAt(0).

Aquí está mi ejemplo:

https://stackblitz.com/edit/node-tebpdp?file=ArrayStringsFirstLetter.js

¡Enlace a la captura de pantalla!

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!