Skip to content

Commit 2b82934

Browse files
committed
Refactor countChar function to return early for invalid inputs and remove redundant code
1 parent 4027919 commit 2b82934

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

Sprint-3/2-practice-tdd/count.js

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
function countChar(stringOfCharacters, findCharacter) {
2-
let characterOccurrence = "";
2+
// Check both inputs are strings
33
if (
4-
typeof stringOfCharacters === "string" &&
5-
typeof findCharacter === "string"
4+
typeof stringOfCharacters !== "string" ||
5+
typeof findCharacter !== "string"
66
) {
7-
stringOfCharacters = stringOfCharacters.toLowerCase();
8-
findCharacter = findCharacter.toLowerCase();
9-
if (findCharacter.length === 1) {
10-
characterOccurrence = stringOfCharacters.split(findCharacter).length - 1;
11-
} else {
12-
characterOccurrence = "invalid input: Input just one character";
13-
}
14-
} else {
15-
characterOccurrence = "Invalid input: input should be a string";
7+
return "Invalid input: input should be a string";
168
}
179

18-
return characterOccurrence;
10+
// Convert both to lowercase for case-insensitive matching
11+
const str = stringOfCharacters.toLowerCase();
12+
const char = findCharacter.toLowerCase();
13+
14+
// Check that only one character is passed
15+
if (char.length !== 1) {
16+
return "invalid input: Input just one character";
17+
}
18+
19+
// Return count (0 for empty strings works naturally)
20+
return str.split(char).length - 1;
1921
}
2022

2123
module.exports = countChar;

0 commit comments

Comments
 (0)