Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

480
Visualizações
Objetos y comparación en Javascript, cómo pasar el valor al método

Tengo este ejercicio de Javascript. No pude averiguar cómo pasar el valor del pago de cada persona al método "comparePay". Me alegraría si me ayudas con esto.

Gracias de antemano.


Cree 3 objetos Person, con los atributos "name", "occupation" y "pay", así como el método "comparePay(person)", que compara los valores de pago del objeto que lo llama y el objeto que se le pasa como argumento. , luego imprimiendo el resultado:

 [name of object calling the method] earns [difference] more than [other's name] [name of object calling the method] earns [difference] less than [other's name] [name of object calling the method] earns as much as [name]

Los objetos deben tener los siguientes valores:

 Michael, JS-programmer, 5000 Lena, Python-programmer, 1500 Brad, Teacher, 800

La salida debería ser así.↓

 First person's name: Michael Second person's job: Python-programmer Third person's pay: 800 Michael earns 3500 more than Lena Brad earns 700 less than Lena Brad earns as much as Brad

Esto es lo que he hecho hasta ahora.

 function Person(name, occupation, pay) { this.name = name; this.occupation = occupation; this.pay = pay; this.comparePay = function(person) { /* compare the value of the pay */ var difference = person.pay - person.pay; if (difference > 0) { return person.name + " earns " + difference + " more than " + person.name; } else if (difference === 0) { return person.name + " earns as much as " + person.name; } else { return person.name + " earns " + Math.abs(difference) + " less than " + person.name; } }; } person1 = new Person("Michael", "JS-programmer", 5000); person2 = new Person("Lena", "Python-programmer", 1500); person3 = new Person("Brad", "Teacher", 800);

y aquí está el código preparado, por lo que no se pueden editar.

 console.log("First person's name: " + person1.name); console.log("Second person's job: " + person2.occupation); console.log("Third person's pay: " + person3.pay + "\n"); person1.comparePay(person2); person3.comparePay(person2); person3.comparePay(person3);
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Creo que el problema proviene de su comparación (está comparando los mismos atributos de objeto). Desea comparar el objeto pasado en el argumento de la función con el objeto actual.

Así que supongo que puedes intentar reemplazar

 var difference = person.pay - person.pay;

con:

 const difference = this.pay - person.pay;

Igual por

 return person.name + " earns " + difference + " more than " + person.name;

debiera ser

 return this.name + " earns " + difference + " more than " + person.name;

De lo contrario, devolverá los mismos nombres. También puede usar la notación de literales de plantilla

 return `${this.name} earns ${difference} more than ${person.name}`;

Espero que tenga sentido. Además, no olvide usar let o const en lugar de var :)

about 4 years ago · Juan Pablo Isaza Relatório

0

Dentro de la función this.comparePay , debe usar this para acceder a las propiedades del objeto:

this.pay , this.name , etc.

 this.comparePay = function(person) { var difference = this.pay - person.pay; ... } 

 function Person(name, occupation, pay) { this.name = name; this.occupation = occupation; this.pay = pay; this.comparePay = function(person) { /* compare the value of the pay */ var difference = this.pay - person.pay; if (difference > 0) { return this.name + " earns " + difference + " more than " + person.name; } if (difference === 0) { return this.name + " earns as much as " + person.name; } return this.name + " earns " + Math.abs(difference) + " less than " + person.name; }; } person1 = new Person("Michael", "JS-programmer", 5000); person2 = new Person("Lena", "Python-programmer", 1500); person3 = new Person("Brad", "Teacher", 800); console.log(person1.name); console.log(person1.pay); console.log(person2.name); console.log(person2.pay); console.log(person3.name); console.log(person3.pay); console.log( person1.comparePay(person2) ); console.log( person3.comparePay(person2) ); console.log( person2.comparePay(person1) ); console.log( person3.comparePay(person3) );


Sugerencias: también puede eliminar las declaraciones else/if ya que está regresando dentro de las declaraciones if . El Paulic-crtn también es importante, así que trate de ceñirse a let/const cuando declare variables en JS.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda