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

75
Views
Agrupación por un objeto en un BST

Tengo una gran BST de objetos (más de 200k) y necesito agruparlos por su nombre en uno solo que combine las existencias y tome el promedio de costos en consecuencia. Si el stock llega a menos o igual a cero, también necesito eliminarlo del BST. Una muestra de la entrada es

 let x = [ { name: 'Shoes of Negligible Looks', stock: -7, cost: '$52.81' }, { name: 'Pants of Profound Intelligence', stock: 4, cost: '$26.07' }, { name: 'Cape of Flaming Reputation', stock: 9, cost: '$87.81' }, { name: 'Cape of Flaming Reputation', stock: 9, cost: '$87.81' }, { name: 'Wand of Profound Reputation', stock: 17, cost: '$89.14' }, { name: 'Cape of Icy Intelligence', stock: 15, cost: '$44.68' }, { name: 'Pants of Negligible Distraction', stock: 28, cost: '$16.91' }, { name: 'Ring of Profound Cunning', stock: 5, cost: '$88.25' }, ]

En esta muestra necesitaría combinar el Cabo de Reputación Llameante.

Este es el método de comparación que estoy usando para comparar los valores de los nodos en mi BST:

 const comparatorFunction = (a, b) => String(a).localeCompare(String(b));

Y creo el nuevo BST y relleno la matriz de esta manera:

 let bst = new BST(comparatorFunction); for (let i = 0; i < x.length; i++) { bst.add(x[i]); }

Luego ordénelo en orden de esta manera (supongo que esto podría ser útil al agrupar):

 let inOrderList = bst.inOrder();

Gracias de antemano a cualquiera que intente esta larga solución.

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

0

Puede que me esté perdiendo algo, pero así es como lo hice con la ayuda de algunas funciones JS integradas; de lo contrario, es posible que desee compartir cómo se ve su implementación de BST.

 function getUnique(arr) { // Getting unique items by name const newArr = Array.from(new Set(arr.map(x => x.name))) .sort((a, b) => { // Ascending sort return String(a).localeCompare(String(b));; }); return newArr.map(x => { return arr.find(v => v.name === x); }) // Filtering by stock! .filter(x => x.stock > 0); } const x = [ { name: 'Shoes of Negligible Looks', stock: -7, cost: '$52.81' }, { name: 'Pants of Profound Intelligence', stock: 4, cost: '$26.07' }, { name: 'Cape of Flaming Reputation', stock: 9, cost: '$87.81' }, { name: 'Cape of Flaming Reputation', stock: 9, cost: '$87.81' }, { name: 'Wand of Profound Reputation', stock: 17, cost: '$89.14' }, { name: 'Cape of Icy Intelligence', stock: 15, cost: '$44.68' }, { name: 'Pants of Negligible Distraction', stock: 28, cost: '$16.91' }, { name: 'Ring of Profound Cunning', stock: 5, cost: '$88.25' }, ]; console.log(getUnique(x));

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!