简体   繁体   English

如何使方法和函数起作用-Javascript

[英]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!!! 提前非常感谢您!!!

The argument is person object but you are referring to some actors which is not defined anywhere inside the function, So changed to person.firstName & person.lastName 参数是person对象,但是您引用的是一些在函数内部未定义的actors ,因此更改为person.firstNameperson.lastName

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

JSFIDDLE JSFIDDLE

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. 您好,我叫塞缪尔·L。

Hello, my name is Meryl 你好,我叫梅丽尔

Hello, my name is John 你好,我的名字是约翰

False! 假! False! 假!
False! 假!
Meryl 梅丽尔
False! 假!
Leonardo DiCaprio 48.4 莱昂纳多·迪卡普里奥48.4

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM