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

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

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