Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

150
Visualizações
¿Cómo puedo tener una tercera condición en mi clasificación?

tengo la siguiente matriz

 let arr = [ { auctionProductName: "m", pricePerUnitPerHour: 1, quanitity:20 }, { auctionProductName: "m", pricePerUnitPerHour: 22, quanitity:20 }, { auctionProductName: "a", pricePerUnitPerHour: 5555, quanitity:20 }, { auctionProductName: "a", pricePerUnitPerHour: 22, quanitity:20 }, { id:1, auctionProductName: "a", pricePerUnitPerHour: 22, quanitity:20 }, { auctionProductName: "m", pricePerUnitPerHour: 2222, quanitity:20 }, { id:2, auctionProductName: "a", pricePerUnitPerHour: 22, quanitity:2 }, ]

por lo tanto, esta matriz debe ordenarse primero ASCENDIENDO en el nombre del producto de subasta, si hay los mismos objetos después de esta clasificación por nombre del producto de subasta, entonces deben ordenarse por precio por unidad por hora.

Para eso tengo el siguiente código que funciona como se esperaba

 function defaultTableSort() { arr = arr.sort( function (a, b) { if (a.auctionProductName === b.auctionProductName) { return a.pricePerUnitPerHour - b.pricePerUnitPerHour; } return a.auctionProductName > b.auctionProductName ? 1 : -1; }); }

después de la clasificación me sale

 [ { "auctionProductName": "a", "pricePerUnitPerHour": 22, "quanitity": 20 }, { "id": 1, "auctionProductName": "a", "pricePerUnitPerHour": 22, "quanitity": 20 }, { "id": 2, "auctionProductName": "a", "pricePerUnitPerHour": 22, "quanitity": 2 }, { "auctionProductName": "a", "pricePerUnitPerHour": 5555, "quanitity": 20 }, { "auctionProductName": "m", "pricePerUnitPerHour": 1, "quanitity": 20 }, { "auctionProductName": "m", "pricePerUnitPerHour": 22, "quanitity": 20 }, { "auctionProductName": "m", "pricePerUnitPerHour": 2222, "quanitity": 20 } ]

No puedo encontrar una manera de modificar mi función defaultTableSort , por lo que la tercera condición será por cantidad.

si el nombre del producto de la subasta y el precio por unidad por hora son iguales, debemos ordenar por cantidad.

Eso significa que el tercer objeto (DESPUÉS DE LA CLASIFICACIÓN) con una identificación de 2 debe estar antes del segundo objeto con una identificación de 1.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Podrías encadenar la clasificación deseada.

Para obtener una clasificación descendente, puede intercambiar a y b .

 const array = [{ auctionProductName: "m", pricePerUnitPerHour: 1, quanitity: 20 }, { auctionProductName: "m", pricePerUnitPerHour: 22, quanitity: 20 }, { auctionProductName: "a", pricePerUnitPerHour: 5555, quanitity: 20 }, { auctionProductName: "a", pricePerUnitPerHour: 22, quanitity: 20 }, { id: 1, auctionProductName: "a", pricePerUnitPerHour: 22, quanitity: 20 }, { auctionProductName: "m", pricePerUnitPerHour: 2222, quanitity: 20 }, { id: 2, auctionProductName: "a", pricePerUnitPerHour: 22, quanitity: 2 }]; array.sort((a, b) => a.auctionProductName.localeCompare(b.auctionProductName) || a.pricePerUnitPerHour - b.pricePerUnitPerHour || a.quanitity - b.quanitity ); console.log(array);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório

0

Solo agregue otra cláusula if

 function (a, b) { if (a.auctionProductName === b.auctionProductName) { if(a.pricePerUnitPerHour === a.pricePerUnitPerHour) return a.quantity - b.quantity; return a.pricePerUnitPerHour - b.pricePerUnitPerHour; } return a.auctionProductName > b.auctionProductName ? 1 : -1; }
about 4 years ago · Juan Pablo Isaza Relatório

0

Puede otra estructura condicional para verificar si:

a.pricePerUnitPerHour === b.pricePerUnitPerHour

con un código final:

 function defaultTableSort() { arr = arr.sort( function (a, b) { if (a.auctionProductName === b.auctionProductName) { // auctionProductName is equal between a and b if (a.pricePerUnitPerHour === b.pricePerUnitPerHour) { // pricePerUnitPerHour is equal between a and b // sort based on: quantity return a.quantity - b.quantity } // sort based on: pricePerUnitPerHour return a.pricePerUnitPerHour - b.pricePerUnitPerHour; } // sort based on: auctionProductName return a.auctionProductName > b.auctionProductName ? 1 : -1; }); }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda