Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

149
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!