Skip to content

Commit 3e1d72f

Browse files
committed
Completed get-ordinal-number exercise
1 parent d110d21 commit 3e1d72f

File tree

2 files changed

+88
-3
lines changed

2 files changed

+88
-3
lines changed
Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
11
function getOrdinalNumber(num) {
2-
return "1st";
2+
if (isNaN(num)) {
3+
return "";
4+
}
5+
6+
const numberString = String(num);
7+
const lastDigit = Number(numberString.slice(-1));
8+
const lastDigits = Number(numberString.slice(-2));
9+
let ordinal;
10+
11+
console.log("lastDigits", lastDigits);
12+
13+
if (num === 0) {
14+
ordinal = "";
15+
} else if (lastDigits === 11) {
16+
ordinal = "th";
17+
} else if (lastDigit === 1) {
18+
ordinal = "st";
19+
} else if (lastDigit === 2) {
20+
ordinal = "nd";
21+
} else if (lastDigit === 3) {
22+
ordinal = "rd";
23+
} else {
24+
ordinal = "th";
25+
}
26+
27+
return `${num}${ordinal}`;
328
}
429

530
module.exports = getOrdinalNumber;

Sprint-3/2-practice-tdd/get-ordinal-number.test.js

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
/* ************************************************************************** */
2+
/* */
3+
/* ::: :::::::: */
4+
/* get-ordinal-number.test.js :+: :+: :+: */
5+
/* +:+ +:+ +:+ */
6+
/* By: aur-rehm <[email protected]> +#+ +:+ +#+ */
7+
/* +#+#+#+#+#+ +#+ */
8+
/* Created: 2025/10/25 11:36:08 by aur-rehm #+# #+# */
9+
/* Updated: 2025/10/25 13:00:07 by aur-rehm ### ########.fr */
10+
/* */
11+
/* ************************************************************************** */
12+
113
const getOrdinalNumber = require("./get-ordinal-number");
214
// In this week's prep, we started implementing getOrdinalNumber
315

@@ -8,6 +20,54 @@ const getOrdinalNumber = require("./get-ordinal-number");
820
// When the number is 1,
921
// Then the function should return "1st"
1022

11-
test("should return '1st' for 1", () => {
12-
expect(getOrdinalNumber(1)).toEqual("1st");
23+
test("should return '@' for ", () => {
24+
expect(getOrdinalNumber("@")).toEqual("");
25+
});
26+
27+
test("should return '0' for 0", () => {
28+
expect(getOrdinalNumber(0)).toEqual("0");
29+
});
30+
31+
test("should return '11th' for 11", () => {
32+
expect(getOrdinalNumber(11)).toEqual("11th");
33+
});
34+
35+
test("should return '-11th' for -11", () => {
36+
expect(getOrdinalNumber(-11)).toEqual("-11th");
37+
});
38+
39+
test("should return `22nd` for 22", () => {
40+
expect(getOrdinalNumber(22)).toEqual("22nd");
41+
});
42+
43+
test("should return `123rd` for 123", () => {
44+
expect(getOrdinalNumber(123)).toEqual("123rd");
45+
});
46+
47+
test("should return '1234th' for 1234", () => {
48+
expect(getOrdinalNumber(1234)).toEqual("1234th");
49+
});
50+
51+
test("should return '12345th' for 12345", () => {
52+
expect(getOrdinalNumber(12345)).toEqual("12345th");
53+
});
54+
55+
test("should return '123456th' for 123456", () => {
56+
expect(getOrdinalNumber(123456)).toEqual("123456th");
57+
});
58+
59+
test("should return '1234567th' for 1234567", () => {
60+
expect(getOrdinalNumber(1234567)).toEqual("1234567th");
61+
});
62+
63+
test("should return '12345678th' for 12345678", () => {
64+
expect(getOrdinalNumber(12345678)).toEqual("12345678th");
65+
});
66+
67+
test("should return '123456789th' for 123456789", () => {
68+
expect(getOrdinalNumber(123456789)).toEqual("123456789th");
69+
});
70+
71+
test("should return '1234567890' for 1234567890th", () => {
72+
expect(getOrdinalNumber(1234567890)).toEqual("1234567890th");
1373
});

0 commit comments

Comments
 (0)