简体   繁体   English

具有数组和原型javascript的功能

[英]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: 使用for循环来迭代该组,如果当前人是男性,则将其添加到result

 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' 使用reduce函数可以累积gender === 'male'的比赛

ES6 approach: ES6方法:

 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 使用简单的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); 

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

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