-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path02.race.js
More file actions
46 lines (36 loc) · 1.05 KB
/
02.race.js
File metadata and controls
46 lines (36 loc) · 1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function race(input) {
let racers = {};
let names = input.shift().split(", ");
for (let line of input) {
if (line !== "end of race") {
let racerName = line.match(/[A-Z]+/gi).join("");
let ranDistance = line.match(/\d/g);
let totalDistance = 0;
//for (let meters of ranDistance) {
//totalDistance += Number(meters);
//}
totalDistance = ranDistance.map(Number).reduce((a, b) => a + b);
if (names.includes(racerName)) {
if (racers.hasOwnProperty(racerName)) {
racers[racerName] += totalDistance;
} else {
racers[racerName] = totalDistance;
}
}
}
}
let sortedArr = Object.keys(racers).sort((a, b) => racers[b] - racers[a]);
console.log(
`1st place: ${sortedArr[0]}\n2nd place: ${sortedArr[1]}\n3rd place: ${sortedArr[2]}`
);
}
race([
"George, Peter, Bill, Tom",
"G4e@55or%6g6!68e!!@ ",
"R1@!3a$y4456@",
"B5@i@#123ll",
"G@e54o$r6ge#",
"7P%et^#e5346r",
"T$o553m&6",
"end of race",
]);