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

112
Views
Agrupe la matriz de objetos principal en función del filtro de la matriz de objetos secundarios

He codificado y obtuve los resultados que quiero, pero creo que este código parece sucio.

 const verses = [{ index: 1, verses: [{ level: 1 }, { level: 1 } ] }, { index: 2, verses: [{ level: 1 }, { level: 1 } ] }, { index: 3, verses: [{ level: 2 }] }, { index: 4, verses: [{ level: 2 }] }, { index: 5, verses: [{ level: 2 }, { level: 2 } ] }, { index: 6, verses: [{ level: 3 }, { level: 3 } ] }, { index: 7, verses: [{ level: 3 }, { level: 3 }, { level: 4 }, { level: 4 } ] } ] function getVerseIndexByLevel(level) { const result = verses.map(v => { const mappingByLevel = Math.max.apply(Math, [...new Set(v.verses.map(w => w.level))]) const mappingByVerse = v.index return { level: mappingByLevel, verse: mappingByVerse } }).filter(v => v.level === level).map(v => v.verse) return result } for (let i = 1; i <= 4; i++) { console.log({ level: i, verse: getVerseIndexByLevel(i) }) }

¿Mi código anterior consume demasiado rendimiento?

¿Podría hacerlo más limpio y simple sin cambiar el resultado en absoluto?

-No sé qué detalles tengo que agregar más, StackOverflow me obligó a escribir esto porque la publicación es principalmente código. pero espero que lo entiendas con solo mirar los resultados del código.-

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

0

En cuanto al rendimiento, lo único que puedo ver que podría mejorar sería llamar a getVerseIndexByLevel solo una vez y usar el mapeo de resultados calculado, en lugar de llamarlo varias veces (lo que requiere volver a analizar la entrada cada vez). Algo como

 const verseIndicies = getVerseIndicies(); for (let i = 1; i <= 4; i++) { console.log({ level: i, verse: verseIndicies[i] }) }

Otra ligera mejora: dado que está utilizando la sintaxis de ES6, no necesita .apply a Math.max , solo distribuya el conjunto en él.

Tampoco es necesario que primero convierta los números de nivel en un Conjunto; dado que se pasa a Math.max de todos modos, las repeticiones no son un problema.

 const verses=[{index:1,verses:[{level:1},{level:1}]},{index:2,verses:[{level:1},{level:1}]},{index:3,verses:[{level:2}]},{index:4,verses:[{level:2}]},{index:5,verses:[{level:2},{level:2}]},{index:6,verses:[{level:3},{level:3}]},{index:7,verses:[{level:3},{level:3},{level:4},{level:4}]}]; function getVerseIndicies() { const verseIndicies = {}; for (const v of verses) { const level = Math.max(...v.verses.map(w => w.level)); verseIndicies[level] ??= []; verseIndicies[level].push(v.index); } return verseIndicies; } const verseIndicies = getVerseIndicies(); for (let i = 1; i <= 4; i++) { console.log({ level: i, verse: verseIndicies[i] }) }

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!