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

242
Vistas
¿Cómo clasifico una matriz de objetos en orden descendente según el valor alfanumérico en Javascript?
var ArrOfObj = [ { name: "a", value: "BNG2000" }, { name: "b", value: "BNG2001" }, { name: "c", value: "CHN-4000" }, { name: "d", value: "CHN-4004" } ]

Quiero ordenar esta matriz de objetos en orden descendente según la propiedad de valor.

Respuesta esperada:

 var ArrOfObj = [ { name: "d", value: "CHN-4004" }, { name: "c", value: "CHN-4000" }, { name: "b", value: "BNG2001" }, { name: "a", value: "BNG2000" } ]
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Necesita una función de comparación personalizada que use la propiedad de valor de sus objetos para hacer una ordenación alfabética descendente en su ArrOfObj.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

El comparador, en esta demostración que compartí aquí, extrae la parte numérica de los valores de cadena y los compara en función de cómo esos 2 números son relativos entre sí para que la matriz se ordene por propiedad de valor de manera descendente.

  • BNG2000 (como cadena) -> 2000 (como número)
  • BNG2001 (como cadena) -> 2001 (como número)
  • CHN-4000 (como cadena) -> 4000 (como número)
  • CHN-4004 (como cadena) -> 4004 (como número)

Orden de clasificación: 1: 4004, 2: 4000, 3: 2001, 4: 2000

 var ArrOfObj=[ {name: "a", value:"BNG2000"}, {name: "b", value:"BNG2001"}, {name: "c", value:"CHN-4000"}, {name: "d", value:"CHN-4004"} ] function customComparer(a, b){ const value_a = parseInt( getNumberPart(a.value) ); const value_b = parseInt( getNumberPart(b.value) ); if(value_a < value_b) return 1; if(value_a > value_b) return -1; return 0; } //returns the numeric part contained in subject string function getNumberPart(subject){ let value = ''; const match = subject.match(/(\d+)/m); if (match != null) value = match[1]; return value; } ArrOfObj.sort( customComparer ); console.log(ArrOfObj); /* [ { "name": "d", "value": "CHN-4004" }, { "name": "c", "value": "CHN-4000" }, { "name": "b", "value": "BNG2001" }, { "name": "a", "value": "BNG2000" } ] */

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