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

291
Views
crear un objeto a partir de una matriz ordenada alfabéticamente donde las claves son las primeras letras y los valores son las cadenas

He estado tratando de obtener una salida de objeto de una matriz ordenada alfabéticamente.

Por ejemplo, si tengo arr = ['anger', 'apple', 'bowl', 'cat'] entonces quiero que mi objeto sea como obj = { a: ['anger', 'apple'], b: ['bowl'], c:['cat']}

Hasta ahora tengo esto, pero no funciona correctamente.

 const p4 = function (arr) { let val = {}; const sortArr = arr.sort(); for (let i = 0; i < sortArr.length; i++) { for (let j = i; j < sortArr.length; j++) { if (sortArr[i].charAt(0) == sortArr[j].charAt(0)) { val.sortArr[j].charAt(0) =sortArr[j] ; } } return val; } };
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puedes usar reduce :

 let arr = ['anger', 'apple', 'bowl', 'cat'] const result = arr.reduce((a, b) => { let c = b.charAt(0); if (a[c]) { a[c].push(b) } else { a[c] = [b]; } return a; }, {}) console.log(result)

about 4 years ago · Juan Pablo Isaza Report

0

En el código:

 let val = {}; const sortArr = arr.sort();

sort ordena en su lugar y devuelve la matriz ordenada, por lo que sortArr y arr hacen referencia a la misma matriz (ordenada). Podrías simplemente hacer:

 arr.sort()

y use arr a continuación en lugar de sortArr .

 for (let i = 0; i < sortArr.length; i++) { for (let j = i; j < sortArr.length; j++) {

No hay necesidad de procesar la matriz dos veces. Todo lo que necesitas hacer es:

  1. Iterar sobre cada valor en la matriz
  2. Obtener la primera letra del valor
  3. Si el objeto val no tiene una propiedad con ese nombre, créelo y asígnele una matriz al valor
  4. Inserte la cadena en la matriz val[char]

P.ej

 function arrToObj(arr) { arr.sort(); let result = {}; for (let i=0, c; i<arr.length; i++) { c = arr[i].substr(0,1); if (!result[c]) { result[c] = []; } result[c].push(arr[i]); } return result; } let arr = ['anger', 'apple', 'bowl', 'cat'] console.log(arrToObj(arr));

También puedes hacer lo mismo con reduce :

 let arr = ['anger', 'apple', 'bowl', 'cat'] let obj = arr.sort().reduce((acc, v) => { let c = v.substr(0,1); if (!acc[c]) acc[c] = []; acc[c].push(v); return acc; }, {}); console.log(obj);

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!