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, 800La 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 BradEsto 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);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 :)
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.