简体   繁体   中英

Function with array and prototype javascript

I got to do a program that shows how many 'men' do I have on my 'group' array. I got this so far:

Person.prototype.myFunction= function(group){
    if (this.gender = 'male') {
        console.log(group);
    }
    else{
        return Person;
    }
};

var person1 = new Person('Alex', 'male', '25');
var person2 = new Person('Roberto', 'male', '70');
var person3 = new Person('Silverio', 'male', '45');
var person4 = new Person('Arturo', 'male', '24');
var person5 = new Person('Ramón', 'male', '50');
var person6 = new Person('Sol', 'female', '25');
var person7 = new Person('Sarai', 'female', '20');
var person8 = new Person('Alexa', 'female', '22');
var person9 = new Person('Betty', 'female', '24');
var person10 = new Person('Daniela', 'female', '25');

var group=[person1, person2, person3, person4, person5, person6, person7, person8, person9, person10];

I'm sure that I'm close, but my if it's not working.

Use a for loop to iterate the group, and add one to result if the current person is male:

 var group = [ new Person('Alex', 'male', '25'), new Person('Roberto', 'male', '70'), new Person('Silverio', 'male', '45'), new Person('Arturo', 'male', '24'), new Person('Ramón', 'male', '50'), new Person('Sol', 'female', '25'), new Person('Sarai', 'female', '20'), new Person('Alexa', 'female', '22'), new Person('Betty', 'female', '24'), new Person('Daniela', 'female', '25') ]; function countMales(group){ var result = 0; for(var i = 0; i < group.length; i++) { if(group[i].gender === 'male') result += 1; } return result; }; console.log(countMales(group)); function Person(name, gender, age) { this.name = name; this.gender = gender; this.age = age; } 

Using the function reduce you can accumulate the matches with gender === 'male'

ES6 approach:

 function Person(name, gender, age) { this.name = name; this.gender = gender; this.age = age;}var person1 = new Person('Alex', 'male', '25');var person2 = new Person('Roberto', 'male', '70');var person3 = new Person('Silverio', 'male', '45');var person4 = new Person('Arturo', 'male', '24');var person5 = new Person('Ramón', 'male', '50');var person6 = new Person('Sol', 'female', '25');var person7 = new Person('Sarai', 'female', '20');var person8 = new Person('Alexa', 'female', '22');var person9 = new Person('Betty', 'female', '24');var person10 = new Person('Daniela', 'female', '25');var group=[person1, person2, person3, person4, person5, person6, person7, person8, person9, person10]; var howMany = group.reduce((a, {gender}) => (a + (gender === 'male')), 0); console.log(howMany); 

Wider compatible approach using simple for-of-loop

 function Person(name, gender, age) { this.name = name; this.gender = gender; this.age = age;}var person1 = new Person('Alex', 'male', '25');var person2 = new Person('Roberto', 'male', '70');var person3 = new Person('Silverio', 'male', '45');var person4 = new Person('Arturo', 'male', '24');var person5 = new Person('Ramón', 'male', '50');var person6 = new Person('Sol', 'female', '25');var person7 = new Person('Sarai', 'female', '20');var person8 = new Person('Alexa', 'female', '22');var person9 = new Person('Betty', 'female', '24');var person10 = new Person('Daniela', 'female', '25');var group=[person1, person2, person3, person4, person5, person6, person7, person8, person9, person10]; var howMany = 0; for (let person of group) { if (person.gender === 'male') howMany++; } console.log(howMany); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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