Skip to content

Commit 6dff138

Browse files
committed
In mode.js function calculateMode refactored.
1 parent d2985e4 commit 6dff138

File tree

1 file changed

+51
-11
lines changed

1 file changed

+51
-11
lines changed

Sprint-2/stretch/mode.js

Lines changed: 51 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,69 @@
88
// refactor calculateMode by splitting up the code
99
// into smaller functions using the stages above
1010

11-
function calculateMode(list) {
12-
// track frequency of each value
13-
let freqs = new Map();
11+
// function calculateMode(list) {
12+
// // track frequency of each value
13+
// let freqs = new Map();
1414

15-
for (let num of list) {
16-
if (typeof num !== "number") {
17-
continue;
18-
}
15+
// for (let num of list) {
16+
// if (typeof num !== "number") {
17+
// continue;
18+
// }
19+
20+
// freqs.set(num, (freqs.get(num) || 0) + 1);
21+
// }
22+
23+
// // Find the value with the highest frequency
24+
// let maxFreq = 0;
25+
// let mode;
26+
// for (let [num, freq] of freqs) {
27+
// if (freq > maxFreq) {
28+
// mode = num;
29+
// maxFreq = freq;
30+
// }
31+
// }
32+
33+
// return maxFreq === 0 ? NaN : mode;
34+
//}
35+
36+
37+
// -------------- refactored ------------- //
38+
39+
// Phase 1: Count the frequency of each number
40+
41+
function countFrequency(list) {
42+
const frequency = new Map();
1943

20-
freqs.set(num, (freqs.get(num) || 0) + 1);
44+
for (const num of list) {
45+
if (typeof num !== "number") continue; // skip non-numbers
46+
frequency.set(num, (frequency.get(num) || 0) + 1);
2147
}
2248

23-
// Find the value with the highest frequency
49+
return frequency;
50+
}
51+
52+
// Stage 2: Find the number with the highest frequency
53+
function findMode(frequency) {
2454
let maxFreq = 0;
2555
let mode;
26-
for (let [num, freq] of freqs) {
56+
57+
for (const [num, freq] of frequency) {
2758
if (freq > maxFreq) {
28-
mode = num;
2959
maxFreq = freq;
60+
mode = num;
3061
}
3162
}
3263

3364
return maxFreq === 0 ? NaN : mode;
3465
}
3566

67+
// Main function
68+
function calculateMode(list) {
69+
const frequency = countFrequency(list);
70+
return findMode(frequency);
71+
}
72+
console.log(calculateMode([1, 2, 2, 3, 3, 3, 4]));
73+
3674
module.exports = calculateMode;
75+
76+
// In mode.js function calculateMode refactored.

0 commit comments

Comments
 (0)