Logo
/
Programming
/
JavaScript Course
/

Conditions inside loops

JavaScript: Conditions inside loops

Both the loop body and function body are places where statements are executed. So we can use everything we already learned inside it, such as conditionals.

Imagine a function that counts the number of times a letter appears in a sentence. Here's how it might work:

countChars('Fear cuts deeper than swords.', 'e'); // 4
// If there are no matches, the result is 0
countChars('Sansa', 'y'); // 0

Before examining its contents, answer these questions:

  • Is this an aggregate operation?
  • What will be the test condition for whether the character occurs?
const countChars = (str, char) => {
  let i = 0;
  let count = 0;
  while (i < str.length) {
    if (str[i] === char) {
      // Count only relevant characters
      count = count + 1;
    }
    // Counter increases no matter what happens
    i = i + 1;
  }

  return count;
};

This is an aggregate task. Although it doesn't count every character, you still have to parse through each character to calculate the sum.

A key feature of this loop is the condition inside its body. The variable count only increases when the current character matches the expected one.

Apart from that, it is a generic aggregate function that returns the number of required characters.

Instructions

The function from the theory is case-sensitive. It means 'A' and 'a' from its point of view are different characters. Write a version of this function that is not case-sensitive:

countChars('HexlEt', 'e'); // 2
countChars('HexlEt', 'E'); // 2

If you've reached a deadlock it's time to ask your question in the «Discussions». How ask a question correctly:

  • Be sure to attach the test output, without it it's almost impossible to figure out what went wrong, even if you show your code. It's complicated for developers to execute code in their heads, but having a mistake before their eyes most probably will be helpful.
Found a bug? Have something to add? Pull requests are welcome!