Zhorzh

Untitled

Mar 1st, 2022
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. import { OlympiansFactory } from '../factories/olympians.factory.js';
  2. import { OlympicsCommittee } from '../providers/olympics-committee.js';
  3.  
  4. export class ListOlympiansTask {
  5. #defaultKey = 'firstname';
  6. #defaultOrder = 'asc';
  7. #orderDirection = {
  8. asc: 1,
  9. desc: -1,
  10. };
  11.  
  12. #factory = OlympiansFactory;
  13. #committee = OlympicsCommittee;
  14.  
  15. run(key = this.#defaultKey, order = this.#defaultOrder) {
  16. if (this.#committee.olympians.length === 0) {
  17. return 'No olympians added!';
  18. }
  19. const final = [...this.#committee.olympians];
  20. if(this.#orderDirection[order] === 1) {
  21. final.sort((a, b) => a[key] > b[key] ? 1 : -1);
  22. }
  23. if(this.#orderDirection[order] === 1) {
  24. final.sort((a, b) => b[key] < a[key] ? 1 : -1);
  25. }
  26.  
  27. let result = '';
  28. for(const el of final) {
  29. result += `${el.print()}\n`;
  30. }
  31. return `Sorted by [key: ${key}] in [order: ${order}]
  32. ${result}
  33. `;
  34.  
  35. // this should return the sorted olympians info instead
  36. }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment