|
1 | 1 | "use strict"; |
2 | | -// Comparison function that tells the sort method how to sort numbers in descending order |
3 | | -let sortDescending2 = (a, b) => { |
4 | | - if (a > b) { |
5 | | - return -1; |
6 | | - ; |
| 2 | +/* Module 5: Declare and instantiate classes in TypeScript |
| 3 | + Lab End */ |
| 4 | +/* EXERCISE 1 */ |
| 5 | +class BuildArray { |
| 6 | + // TODO Define the constructor |
| 7 | + constructor(items, sortOrder) { |
| 8 | + // TODO Define the methods. |
| 9 | + this.sortDescending = (a, b) => { |
| 10 | + if (a > b) { |
| 11 | + return -1; |
| 12 | + } |
| 13 | + else if (b > a) { |
| 14 | + return 1; |
| 15 | + } |
| 16 | + else { |
| 17 | + return 0; |
| 18 | + } |
| 19 | + }; |
| 20 | + this.sortAscending = (a, b) => { |
| 21 | + if (a > b) { |
| 22 | + return 1; |
| 23 | + } |
| 24 | + else if (b > a) { |
| 25 | + return -1; |
| 26 | + } |
| 27 | + else { |
| 28 | + return 0; |
| 29 | + } |
| 30 | + }; |
| 31 | + // Limit the number of items to 100 if it exceeds 100 |
| 32 | + this._items = Math.min(items, 100); |
| 33 | + this._sortOrder = sortOrder; |
7 | 34 | } |
8 | | - else if (b > a) { |
9 | | - return 1; |
10 | | - ; |
| 35 | + // TODO Define the accessors |
| 36 | + get items() { |
| 37 | + return this._items; |
11 | 38 | } |
12 | | - else { |
13 | | - return 0; |
| 39 | + set items(items) { |
| 40 | + // Limit the number of items to 100 if it exceeds 100 |
| 41 | + this._items = Math.min(items, 100); |
14 | 42 | } |
15 | | -}; |
16 | | -// Comparison function that tells the sort method how to sort numbers in ascending order |
17 | | -let sortAscending2 = (a, b) => { |
18 | | - if (a > b) { |
19 | | - return 1; |
| 43 | + get sortOrder() { |
| 44 | + return this._sortOrder; |
20 | 45 | } |
21 | | - else if (b > a) { |
22 | | - return -1; |
| 46 | + set sortOrder(sortOrder) { |
| 47 | + this._sortOrder = sortOrder; |
23 | 48 | } |
24 | | - else { |
25 | | - return 0; |
26 | | - } |
27 | | -}; |
28 | | -// This function builds an array of unique random numbers containing the number of items based on the number passed to it. |
29 | | -// The sortOrder parameter determines whether to sort the array in ascending or decending order. |
30 | | -function buildArray2(items, sortOrder) { |
31 | | - let randomNumbers = []; |
32 | | - let nextNumber; |
33 | | - for (let i = 0; i < items; i++) { |
34 | | - nextNumber = Math.floor(Math.random() * (100 - 1)) + 1; |
35 | | - if (randomNumbers.indexOf(nextNumber) === -1) { |
36 | | - randomNumbers.push(nextNumber); |
| 49 | + buildArray() { |
| 50 | + let randomNumbers = []; |
| 51 | + let nextNumber; |
| 52 | + for (let counter = 0; counter < this.items; counter++) { |
| 53 | + nextNumber = Math.ceil(Math.random() * 100); // Removed (100 - 1) as it's redundant |
| 54 | + if (randomNumbers.indexOf(nextNumber) === -1) { |
| 55 | + randomNumbers.push(nextNumber); |
| 56 | + } |
| 57 | + else { |
| 58 | + counter--; |
| 59 | + } |
| 60 | + } |
| 61 | + if (this._sortOrder === 'ascending') { |
| 62 | + return randomNumbers.sort(this.sortAscending); |
37 | 63 | } |
38 | 64 | else { |
39 | | - i--; |
| 65 | + return randomNumbers.sort(this.sortDescending); |
40 | 66 | } |
41 | 67 | } |
42 | | - if (sortOrder === 'ascending') { |
43 | | - return randomNumbers.sort(sortAscending2); |
44 | | - } |
45 | | - else { |
46 | | - return randomNumbers.sort(sortDescending2); |
47 | | - } |
48 | 68 | } |
49 | | -let testArray1 = buildArray2(12, 'ascending'); |
50 | | -let testArray2 = buildArray2(8, 'descending'); |
51 | | -console.log(testArray1); |
52 | | -console.log(testArray2); |
| 69 | +/* TODO: Instantiate the BuildArray objects. */ |
| 70 | +let testArray1 = new BuildArray(12, 'ascending'); |
| 71 | +let testArray2 = new BuildArray(8, 'descending'); |
| 72 | +console.log(testArray1.buildArray()); |
| 73 | +console.log(testArray2.buildArray()); |
0 commit comments