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

358
Vistas
¿Cómo ordenar los objetos según el valor del elemento seleccionado? - mongodb, nodejs

Tengo que ordenar los objetos según el valor de la opción de selección. ¿Cómo debo hacer esto?

//Este es mi elemento seleccionado en otro archivo

 <select class="form-select" aria-label="Default select example"> <option id="sorting" selected>Sort by</option> <option value="1">Low to High price</option> <option value="2">High to low price</option> <option value="3">From A to Z</option> <option value="4">From Z to A</option> </select>

//Y código con mi función de clasificación

 module.exports.listOfHouses = async (req, res) => { function selectedValue(){ if(document.getElementById("sorting").value === "1"){ return "title: 1" } else if(document.getElementById('sorting').value == "2"){ return "title: 1" }else if(document.getElementById('sorting').value == "3"){ return "title: 1" }else if(document.getElementById('sorting').value == "4"){ return "title: 1" } else { return "title: 1" } } const houses = await House.find({}).sort({selectedValue}); res.render('houses/houses', {houses} ); };
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede usar el método sort() de Array, que toma una función de devolución de llamada, que toma como parámetros 2 objetos contenidos en la array (que llamamos a y b)

 listOfHouses.sort((a, b) => (a.value > b.value) ? 1 : -1)

El bucle comienza después de ordenar

about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe enviar un objeto de clasificación en su solicitud expresa, pero tiene algunos errores en su código:

  • para obtener un valor del elemento de selección DOM, debe agregar una identificación al elemento de selección, no a la opción. por ejemplo :
 <select id="sorting" class="form-select" aria-label="Default select example"> <option selected>Sort by</option> <option value="1">Low to High price</option> <option value="2">High to low price</option> <option value="3">From A to Z</option> <option value="4">From Z to A</option> </select>

Para obtener el valor seleccionado, puede hacerlo mediante su función en este modo:

 function getSortingObject() { const value = document.getElementById("sorting").value if (document.getElementById("sorting").value === "1") { return {price:1} } else if (document.getElementById('sorting').value == "2") { return {price:-1} } else if (document.getElementById('sorting').value == "3") { return "title: 1" } else if (document.getElementById('sorting').value == "4") { return {title:1} } else { return {title:-1} } }

Ahora necesita enviar el objeto de clasificación actual desde su front-end a su backend, por lo que necesita obtener el objeto de clasificación en este modo:

 const sortingObject = getSortingObject() fetch(YOUR URL,YOUR_BODY WITH Sorting object )

En el backend, debe validar que el objeto de clasificación se puede usar y codificar los profesionales permitidos para clasificar en este modo:

 module.exports.listOfHouses = async (req, res) => { const canSortBy = ["title","price"] const sortingoBJECT = req.body.sortingObject const canSort = Object.keys(sortingoBJECT).findIndex(r=>!canSortBy[r]) if(canSort) res.sendStatus(....) const houses = await House.find({}).sort(sortingoBJECT); res.render('houses/houses', { houses }); };
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