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

157
Vistas
Ordene la matriz del objeto en función de una propiedad y devuelva el objeto inicial ordenado

tengo el siguiente objeto

 { "object": "list", "url": "/v1/prices", "has_more": false, "data": [ { "id": "price_1KHlU72eZvKYlo2CblI51Z8e", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1642150211, "currency": "usd", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "product": "prod_Kxgr3hZDfHnqu1", "recurring": { "aggregate_usage": null, "interval": "month", "interval_count": 1, "usage_type": "licensed" }, "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "recurring", "unit_amount": 2, "unit_amount_decimal": "2" }, {...}, {...} ] }

¿Cómo puedo ordenar el object.data de él en función de la propiedad unit_amount y también mantener los valores iniciales del objeto (url, has_more, ...)?

Intenté usar Ramda, pero me está dando un nuevo objeto solo con los datos ordenados.

Entonces necesito object.data del objeto inicial para ordenar y devolver el objeto completo después de ordenar.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Ramda no le facilitará la modificación de datos, pero si desea crear una copia de su entrada con una copia ordenada de la matriz, eso es bastante simple usando las funciones de lente lensProp y over :

 const sortData = over (lensProp ('data'), sortBy (prop ('unit_amount'))) const obj = {object: "list", url: "/v1/prices", has_more: false, data: [{unit_amount: 2,}, {unit_amount: 1,}, {unit_amount: 3,}, {unit_amount: 9,}, {unit_amount: 5,} ]}; console .log (sortData (obj))
 .as-console-wrapper {max-height: 100% !important; top: 0}
 <script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.27.2/ramda.min.js"></script> <script>const {over, lensProp, sortBy, prop} = R </script>

Aquí robamos el formato de entrada simple de Alexandr Belan. Esa respuesta ya tiene un código simple. Creo que esto es más simple, y definitivamente es más declarativo, pero no me molestaría a menos que ya estuviera usando Ramda en mi aplicación.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Simplemente clasificación simple, por ejemplo

 const obj = { "object": "list", "url": "/v1/prices", "has_more": false, "data": [ {"unit_amount": 2,}, {"unit_amount": 1,}, {"unit_amount": 3,}, {"unit_amount": 9,}, {"unit_amount": 5,}, ] }; const newObj = { ...obj, data: obj.data.sort((o1, o2) => o1.unit_amount - o2.unit_amount) }; console.log(newObj)
 .as-console-wrapper {max-height: 100% !important; top: 0}

about 4 years ago · Juan Pablo Isaza Denunciar

0

Los objetos en Javascript no tienen un orden inherente a sus propiedades, mientras que las matrices sí lo tienen, por lo que le sugiero que extraiga la matriz de datos, la clasifique y luego reemplace la versión sin clasificar en su objeto. Algo como esto (objeto simplificado para facilitar la lectura):

 o = { "object": "list", "url": "/v1/prices", "has_more": false, "data": [ { "id": "price_1KH", "unit_amount": 12, }, { "id": "price_7QW", "unit_amount": 3, }, { "id": "price_4DD", "unit_amount": 7, }, ] } let data = o.data; data.sort((x, y) => x.unit_amount - y.unit_amount); o.data = data; console.dir(o); VM694:23 Object data: Array(3) 0: {id: 'price_7QW', unit_amount: 3} 1: {id: 'price_4DD', unit_amount: 7} 2: {id: 'price_1KH', unit_amount: 12} length: 3 [[Prototype]]: Array(0) has_more: false object: "list" url: "/v1/prices" [[Prototype]]: Object
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