FAQ: Code Challenges: JavaScript Fundamentals - calculateWeight()

This community-built FAQ covers the “calculateWeight()” exercise from the lesson “Code Challenges: JavaScript Fundamentals”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Web Development

FAQs on the exercise calculateWeight()

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

3 posts were split to a new topic: Difference between using = and ===?

5 posts were merged into an existing topic: Difference between using = and ===?

2 posts were split to a new topic: What is wrong with my code?

2 posts were split to a new topic: Do I need to use break or return?

4 posts were split to a new topic: Returning a string instead of a number

3 posts were split to a new topic: String not exact?

2 posts were merged into an existing topic: String not exact?

2 posts were split to a new topic: Should I create an error to check for a number and planet name?

7 posts were merged into an existing topic: String not exact?

5 posts were merged into an existing topic: Do I need to use break or return?

Hi there !

I tried to use an if / else if / else statement for this exercise. When I try the example given in the exercise, ie. console.log(calculateWeight(100, ‘Jupiter’)); , I get 37.8 as if I entered ‘Mercury’ as the second argument.
I can’t seem to find out the reason, can you help me please ? Here’s my code :

const calculateWeight = (earthWeight, planet) => {
  if (planet = 'Mercury') {
    return earthWeight * 0.378;
  } else if (planet = 'Venus') {
    return earthWeight * 0.907;
  } else if (planet = 'Mars') {
    return earthWeight * 0.377;
  } else if (planet = 'Jupiter') {
    return earthWeight * 2.36;
  } else if (planet = 'Saturn') {
    return earthWeight * 0.916;
  } else {
    return 'Invalid Planet Entry. Try: Mercury, Venus, Mars, Jupiter, or Saturn.';
  };
};

That is an assignment operator being used to check for identity. The correct operator is ===.

1 Like

I was wondering if in this case, the user input a UpperCase string. How we could handle it? I have tried something but it’s not working. Follow bellow my code

// Write your function here:

const calculateWeight = (earthWeight, planet) => {
  String.toLowerCase(planet)
  if (planet === 'jupiter'){
    return earthWeight * 2.36
  } else if (planet === 'mercury'){
    return earthWeight * 0.378
  } else if (planet === 'venus'){
    return earthWeight  * 0.907
  } else if (planet === 'mars'){
    return earthWeight  * 0.377;
  } else if (planet === 'saturn'){
    return earthWeight  * 0.916;
  } else {
    return 'Invalid Planet Entry. Try: Mercury, Venus, Mars, Jupiter, or Saturn.'
  }  
}

// Uncomment the line below when you're ready to try out your function
console.log(calculateWeight(100, 'JUPITER')) // Should print 236

// We encourage you to add more function calls of your own to test your code!

looking at the documentation:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase

we can read that toLowerCase returns the converted string.

In this example that you presented me, they attribute the string to a variable, I tried to do the same passing the parameter to the lowercase function and didnt work as well. Doesn’t it work for parameters?

// Write your function here:


const calculateWeight = (earthWeight, planet) => {
  planet.toLowerCase()
  if (planet === 'jupiter'){
    return earthWeight * 2.36
  } else if (planet === 'mercury'){
    return earthWeight * 0.378
  } else if (planet === 'venus'){
    return earthWeight  * 0.907
  } else if (planet === 'mars'){
    return earthWeight  * 0.377;
  } else if (planet === 'saturn'){
    return earthWeight  * 0.916;
  } else {
    return 'Invalid Planet Entry. Try: Mercury, Venus, Mars, Jupiter, or Saturn.'
  }  
}

// Uncomment the line below when you're ready to try out your function
console.log(calculateWeight(100, 'JUPITER')) // Should print 236

// We encourage you to add more function calls of your own to test your code!

.toLowerCase() works fine, it just returns a lower case copy of the original string, it doesn’t mutate the string itself.

Currently, you do nothing with the returned lower case string.

1 Like

I got it! Thank you! I attributed the value of the parameter into a variable and I evoked the variable on the if statement instead the parameter. Worked fine!

const calculateWeight = (earthWeight, planet) => {
    let lower 
    lower = planet.toLowerCase()
    if (lower === 'jupiter'){
      return Math.round(earthWeight * 2.36)
    } else if (lower === 'mercury'){
      return Math.round(earthWeight * 0.378)
    } else if (lower === 'venus'){
      return Math.round(earthWeight  * 0.907)
    } else if (lower === 'mars'){
      return Math.round(earthWeight  * 0.377)
    } else if (lower === 'saturn'){
      return Math.round(earthWeight  * 0.916)
    } else {
      return 'Invalid Planet Entry. Try: Mercury, Venus, Mars, Jupiter, or Saturn.'
    }  
  }

  console.log(calculateWeight(100, 'JuPiTer')) // Should print 236