Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

467
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda