Emily Emily - 1 month ago 14
Javascript Question

how to make methods and functions work - Javascript

The following method and function are not working, could someone help me?

hasMoreOscarsThan - this method accepts one actor object as a parameter and
returns true if the actor has more Oscars than the one that is passed as
a parameter and false otherwise.


Now write the following functions:

getActorByName - this function expects a string as a parameter and returns
the object in the actors array whose name property is equal to the
string that is passed in (if there is one).


My code:

function Person(firstName, lastName, age, numOscars) {

this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.numOscars = numOscars;
this.hello = function() { console.log("Hello, my name is " + this.firstName); }
this.hasMoreOscarsThan = function(x, y) {
if (this.numOscars > this.numOscars) {
return this.firstName;
} else {
return "False!";
}
}

};


var actors = new Array();
actors[0] = new Person("Leonardo", "DiCaprio", 41, 1);
actors[1] = new Person("Jennifer", "Lawrence", 25, 1);
actors[2] = new Person("Samuel L.", " Jackson", 67, 0);
actors[3] = new Person("Meryl", "Streep", 66, 3);
actors[4] = new Person("John", "Cho", 43, 0);

actors.forEach(function(item) {
item.hello();
})

actors.forEach(function(item) {
item.hasMoreOscarsThan();
})


function getActorByName(person) {
console.log(actors.firstName + " " + actors.lastName);
}


function list() {
var actorsLength = actors.length;
for (var i = 0; i < actorsLength; i++) {
getActorByName(actors[i]);
}
}


var search = function(lastName) {
var actorsLength = actors.length;
for (var i = 0; i < actorsLength; i++) {
if (lastName == actors[i].lastName) {
getActorByName(actors[i]);
}
}
}


search("DiCaprio");

var getAverageAge;

getAverageAge = (actors[0].age + actors[1].age + actors[2].age + actors[3].age + actors[4].age) / actors.length;
console.log(getAverageAge);


thank you very much in advance!!!

Answer

I edited your code:

function Person(firstName, lastName, age, numOscars) {

    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
    this.numOscars = numOscars;
    this.hello = function() { console.log("Hello, my name is " + this.firstName); }
    this.hasMoreOscarsThan = function(x) { // x is a compare parameter
        if (this.numOscars > x) { // comparing numOscars with argument x
            return this.firstName;
        } else {
            return "False!";
        }
    }

};


var actors = new Array();
actors[0] = new Person("Leonardo", "DiCaprio", 41, 1);
actors[1] = new Person("Jennifer", "Lawrence", 25, 1);
actors[2] = new Person("Samuel L.", " Jackson", 67, 0);
actors[3] = new Person("Meryl", "Streep", 66, 3);
actors[4] = new Person("John", "Cho", 43, 0);

actors.forEach(function(item) {
    item.hello();
})

actors.forEach(function(item) {
    console.log(item.hasMoreOscarsThan(2)); // I put compare argument 2 and print result to console
})


function getActorByName(person) {
    console.log(person.firstName + " " + person.lastName); // changed actors to person
}


function list() {
    var actorsLength = actors.length;
    for (var i = 0; i < actorsLength; i++) {
        getActorByName(actors[i]);
    }
}


var search = function(lastName) {
    var actorsLength = actors.length;
    for (var i = 0; i < actorsLength; i++) {
        if (lastName == actors[i].lastName) {
            getActorByName(actors[i]);
        }
    }
}


search("DiCaprio");

var getAverageAge;

getAverageAge = (actors[0].age + actors[1].age + actors[2].age + actors[3].age + actors[4].age) / actors.length;
console.log(getAverageAge);

As a result:

Hello, my name is Leonardo

Hello, my name is Jennifer

Hello, my name is Samuel L.

Hello, my name is Meryl

Hello, my name is John

False! False!
False!
Meryl
False!
Leonardo DiCaprio 48.4

Comments