Javascript Comparators - [help]

Asked

Viewed 56 times

0

Dear Friends, good afternoon!

Could help me with the JS code below, I’m encountering some difficulties, but I can’t quite identify what could be adjusted.

"Function that receives two elements and returns a message telling if they are strictly equal, equivalent or different, with their type in parentheses right after the value."

Entree

comparadorBasico(3,3)
comparadorBasico()               ---- Não passou nessa.
comparadorBasico("ABC","ABC")    ---- Não passou nessa.
comparadorBasico(3,"3")
comparadorBasico(null)
comparadorBasico(1,2)
comparadorBasico("1",2)          ---- Não passou nessa.

Expected exit of those that did not pass

Elemento undefined (undefined) é estritamente igual ao elemento undefined (undefined)
Elemento 1 (string) é diferente do elemento 2 (number)
Elemento 1 (string) é diferente do elemento 2 (number)
 

My code so far:

function comparadorBasico(elemento1, elemento2) {
    if (elemento1 === elemento2){
        return ('Elemento ' + elemento1 + ' ' + '(number)' + ' é estritamente igual ao elemento ' + elemento2 + ' ' + '(number)')
    }

    else if (elemento1 != elemento2){
        return ('Elemento ' + elemento1 + ' (string)' + ' é diferente do elemento ' + elemento2 + ' (number)')
    }
    else if (elemento1 = elemento2){
        return ('Elemento ' + elemento1 + ' (number)' + ' é equivalente ao elemento ' + elemento2 + ' (string)')
    }
    else if (elemento1 === elemento2){
        return ('Elemento ' + null +' (object)' + ' é equivalente ao elemento ' + elemento2 + ' (undefined)')
    }
 }

Any help is valid, thank you! :)

  • comparadorBasico("ABC","ABC") ---- Não passou nessa. Assurance of that?

2 answers

3


I saw some points in your code that would need to be reviewed. First, in the third if, you put only one equal sign, in which case you are assigning the value of element2 to element1, rather than comparing. The right thing would be:

else if (elemento1 == elemento2){
   return ('Elemento ' + elemento1 + ' (number)' + ' é equivalente ao elemento ' + elemento2 + ' (string)')
}

Another issue is that the last IF will never be hit as it is the same as the first, so it is an unnecessary code, could erase it.

I made a version of the code and I would like to share it with you, see if you agree with me and it will work:

function comparadorBasico(elemento1, elemento2) {
  let comparador;
  if (elemento1 === elemento2) {
    comparador = 'estritamente igual';
  } else if (elemento1 == elemento2) {
    comparador = 'equivalente'
  } else {
    comparador = 'diferente';
  }
  return `Elemento ${elemento1} (${typeof elemento1}) é ${comparador} ao elemento ${elemento2} (${typeof elemento2})`
}

First, I created a variable to store which is the relation of comparison between the two elements, to avoid keep returning the message all the time. Then I make 3 comparisons: I compare if they are the same type and value ("==="), then I compare if they are the same but of different types ("=="), and if no option previously works out, it means they are different. Finally I mount the return message.

There is! A tip! You can use typeof nomeVariavel to find out what her type is.

1

I have an exercise regarding that doubt of yours, and I made the code that way.

Function comparableBasico(element1, element2) {

if (elemento1 === elemento2) {
   console.log("Elemento",+elemento1, typeof elemento1+ " é estritamente igual ao elemento", +elemento2, typeof elemento2)
  }else if(elemento1 !== elemento2){
    console.log("Elemento",+elemento1, typeof elemento1+ " é diferente igual ao elemento",+elemento2, typeof elemento2)
  }else{
    console.log("Elemento",elemento1, typeof elemento1+ " é equivalente ao elemento",+elemento2, typeof elemento2)
  }

}

compartmentBasic(2,2) Element2number is strictly equal to element2number

Browser other questions tagged

You are not signed in. Login or sign up in order to post.